python 读取excel表格数据,然后写入word模板,批量生成

您所在的位置:网站首页 成绩汇总及批量生成成绩单 python 读取excel表格数据,然后写入word模板,批量生成

python 读取excel表格数据,然后写入word模板,批量生成

2024-06-30 12:49| 来源: 网络整理| 查看: 265

Python 读取excel及批量生成word模板

问题-来源

前几天,我姐遇见了一个难题:需要从excel表格中不断复制数据到word模板中,相当繁琐,询问我有没有解决的办法。于是我百度了一下,借鉴了相关博主的博文,结合自己的需求,最终解决了该问题。特在此记录一下。

问题-困难

问题1:一直无法导入docxptl库,一直尝试仍无法解决。直到第二天,下定决心下载最新版本的python,该问题解决。 问题2:读取excel的xlrd一直读取不了我的数据源,多次百度最终寻得解决办法:因为我的表格是以xlsx结尾的,1.2.0之后的xlrd库版本只能读取xls结尾的表格,所以,我在pycharm中下载的xlrd库版本为1.2.0,该问题解决。

问题-代码解决

word模板需要用{{}}进行占位,具体 如下图所示: 在这里插入图片描述

以下是源码:

# coding: : # coding: utf-8 import xlrd from docxtpl import DocxTemplate def main(): data = xlrd.open_workbook(r'C:\Users\22815\Desktop\打印\数据表.xlsx') for x in range(0, 1):#这儿可以循环多张表 print(x) table = data.sheets()[x] names = data.sheet_names()[x] # 获取表名 nrows = table.nrows print(names) for i in range(nrows): name = table.row_values(i)[0] # 姓名 idCard = table.row_values(i)[3] # 身份证 smallMoney = table.row_values(i)[1] # 金额小写 bigMoney = table.row_values(i)[2] # 金额大写 month = table.row_values(i)[5] # 月份 day = table.row_values(i)[6] # 天 SMoney = str(smallMoney).replace(".0", "")#上面的数据打印出来会有.0,但是我们不需要,所以剔除。 SMonth = str(month).replace(".0", "") Sday = str(day).replace(".0", "") context = { "name": name, # 姓名 "idCard": idCard, # 身份证号码 "smallMoney": SMoney, # 金额小写 "bigMoney": bigMoney, # 金额大写 "month": SMonth, # 月 "day": Sday # 天 } word = DocxTemplate(r'C:\Users\22815\Desktop\打印\个人工资结清承诺书.docx') print(context) word.render(context) word.save(names + "-" + "{}".format(name) + ".docx") print("保存成功") if __name__ == '__main__': main()

问题-总结

以上便是关于该问题的解决代码,仍有许多完善之处:如保存路径和目录的生成等,仍需继续改进。 新手小白,刚上路,有许多知识不清楚,还望大家多多指点一下我,谢谢啦。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3