用docxtpl库实现docx报告自动化输出

对于很多审计人员来说,加班做底稿是常有的事,但最麻烦的不是做底稿,而是修改报告。
一般来说,一份报表对应一份审计报告,如果报表的某个数字改了,那么整张报表的数字都会变化,那么整份报告的所有数字都要重新修改。
当年技术有限,没有办法,只能慢慢改。
现在终于学会了,但却不当审计了。
写了一个小程序,希望可以帮到新人吧。
这是一个比较冷门的Python库,而且库中的函数也不多,才几个,但功能却不错,如果结合Pandas库,可以将Excel表格上的数据自动转化成word的标签。如果说docx库的强大在于生成我们想要的Word文档,那么Docxtpl库的存在就是将这些文档按固定格式输出。
安装方式如下:

pip install docxtpl

安装成功后,不代表马上就能使用,输入代码前需要设置word模板的标签。
什么是Word模板?其实就是一个word文件,只是这个文件有点特别:

Word文档内的双括号就是标签,它是一个变量,可以是张三,也可以是李四。标签只能在同一段落的同一段内使用,不能跨多个段落、表格行、段使用。并且在双括号两边各留下一个空格。
设定好标签之后,再去设置Excel文档的每一列:


每一列的表头都要与Word文档标签的名称要一致。只有这样,Excel中的数据才可以通过标签,将表头下的内容放置在Word中的正确位置。
当Word和Excel都设置好之后,我们再去录入代码:

    import pandas as pd
    from docxtpl import DocxTemplate
    df01=pd.read_excel("导入数据.xlsx")            #导入表格,偏码为简体
    df02 = df01.to_dict(orient="records")           ##数据转化成字典
    for i in df02:
            tpl = DocxTemplate('内审报告模板03.docx')  ##导入Word文档
            tpl.render(i)                       ##将字典替换Word标签
            tpl.save(i['公司名称']+'.docx')     ##按公司保存Word文档

代码非常简单,正确来说,只有三个函数:
DocxTemplate()函数的功能是导入Word文档,如果不在相同文件夹下,就输入绝对路径。其次.render()函数的功能是将Word标签替换。最后.save()函数就是生成好几个word文档。




如果将Word文档设计得精细一点,将标签设计得再详细点:

那么就会生成一份更详细的报告。

这对于很多因为赶报告而要加班的人士来说,这种的小程序大大节省了时间,只要事前搞好了模板以及数据,就可以一键生成报告。
除了自动生成报告,也可以自动生成工资单。试想一下,如果将工资明细导入到Word文档,运行后将自动生成每个人的工资单。那么会计就不用每月都要拿着剪刀将工资表剪成一条一条,而是直接将各个人的工资单分别发送到每个人的微信号就可以了。
如果是学校的话,也可以自动生成录取通知书之类的。只要做好Excel表,就可以按名单生成各人的录取通知书。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 2

这个直接用word邮件合并就行啊,不需要用到编程

2年前 评论
Gandedong (楼主) 2年前

向大佬学习

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!