之前工作中有需要,全网找方法,终于在这篇文章找到了详细的教程,详细教程请跳转这个链接,下面是根据这个链接中的代码进行修改后可用通用的:Python 自动化:根据模板批量生成含指定数据的 word 文档https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/124762362?spm=1001.2014.3001.5506
作为一个编程纯新手,边看边问ai,跟着上面的步骤基本解决了工作中的问题,后来随着工作内容和需求的增加,不断对程序进行优化,现在可以实现通用效果,下面我分享我的修改,如果有大佬看到了,发现有问题和可以优化的地方,烦请指出,我再学习学习,感谢~
修改:
原文当中是将word文档中需要替换的模板字符串在程序中一一写出来,我有时候需要做多个不同的模板,excel中使用的字段都不一样,每次都要重写程序,非常麻烦,修改代码如下:
1、将excel表格第一行字段放到一个元组里
fields = tuple(data.columns)
2、将表格下面的每行信息作为值放到一个字典里,键是对应的索引
data_dict = {row.name: row.values.tolist() for idx, row in data.iterrows()}
3、获取字典的长度,对应的是表格的行数,即需要生成多少份word文档
num = len(data_dict)
4、循环将读取每个字典的值
i=0
while i<num:
dict = { field:con for field,con in zip(fields,data_dict[i])}
tpl.render(dict)
# 补全生成的 .docx 文件名
end_docx_file_name = outfiles_path+ r"\{}的通知书.docx".format(dict[list(dict.keys())[0]])
# 保存生成的 .docx 文件
tpl.save(end_docx_file_name)
# 将生成的 .docx 文件追加到一个列表里,为了后期转 pdf 格式使用,我这里是为了后面将所有文件合并成一个PDF文档,如果只需要多个word文档,下面这句代码就不需要了
end_docx_files_list.append(end_docx_file_name)
i+=1
5、以下是转 pdf 然后合并 pdf 的步骤(这个步骤太麻烦了,而且会产生多余的pdf文件,我想在不产生pdf文件的情况下合并word文档成为一个pdf文件汇总,我问过ai合并多个word文档然后转化为pdf文件,但是发现有格式错乱的问题,有没有会的大佬教一下~)
merger = PdfMerger()
for file in end_docx_files_list:
pdf_file = file.replace('.docx', '.pdf')
convert(file,pdf_file)
merger.append(open(pdf_file,'rb'))
merger.write(outfiles_all+count+'通知书合集.pdf')
merger.close()