最近做办公自动化,减少文员办公成本时,需要使用根据数据创建几千个企业客户的信用档案, 大概是一张大表.如果手动创建填空,需要很长时间.我们使用Python的Python-docx库可以自动写入文档,但是如果大致是一样的内容,我们可以使用docxtpl库,这个库是基于python-docx库和jinja2写的,可以渲染模板.我们需要批量创建word文件时, 使用docxtpl可以快速渲染出想要的word文件.类似于前端的渲染.只要在想要插入数据的地方插入类似于{ { a }}的标签,传入字典{ { "a": 123 }} 就能在标签上渲染出数据123. docxtpl还支持图片,子文档等. 但是目前图片和子文档的支持还不够完善.
一开始, 我是这么写的, 但是发现只能创建一个docx文件, 可能是因为在循环里创建模板对象会出现问题, 可能是循环时对象没有回收, 而tpl对象可能是单例的(我看源代码时没发现, 但想不出别的原因了)
data = pandas.read_excel(excel)
for index, dc in data.iterrows():
tpl = docxtpl.DocxTemplate(tpl)
context["企业名称"] = dc["企业名称"]
context["法人"] = dc["法人"]
context["处罚日期"] = dc["处罚日期"]
context["注册地"] = dc["注册地"]
context["统一社会信用代码"] = dc["统一社会信用代码"]
context["信息报送机关"] = dc["处罚机关"]
context