概述
前两天,公司有需求需要生成一个安全报告,突然就想到docxtpl这个包,真的超级好用,和jinja2有相同的模板语法,也有不同之处。
我会将一些常见操作,插入图片,逻辑循环,逻辑判断,其余请参考官方文档。
转载请标注来源,原创不易谢谢支持!
docxtpl英文手册
文字替换
这个就很简单,不做过多讲解了和jinjia2是一样的.
from docxtplimport DocxTemplate
doc = DocxTemplate('./xxxxx.docx')# 读取doc文件
data_docx = {
'create_time':'2020/11/13',
'evaluationPeople':'Nick',
}
doc.render(data_docx)# 补全数据
doc.save('result.docx')# 保存目标文件
循环生成表格
注意一定要在语法里面写tr,不写tr会有空位置表格,如果循环普通文本无需增加tr或者可以使用{%p for i in alerts%}
from docxtplimport DocxTemplate
doc = DocxTemplate('./xxxxx.docx')# 读取doc文件
data_docx = {
'alerts': [
{'name': '百度', 'v': '1.3.5', 'url': 'https://www.baidu.com'},
{'name': '测试地址', 'v': '1.0', 'url': '0.0.0.0'},
],
}
doc.render(data_docx)# 补全数据
doc.save('result.docx')# 保存目标文件
逻辑判断
插入图片
from docxtpl import DocxTemplate, InlineImage
doc = DocxTemplate('./xxxx.docx')
data_docx = {
'img': [
#需要使用这个方法来添加图片
InlineImage(doc, './a.png'),
]
}
doc.render(data_doc) # 填充数据
doc.save('demo.docx') # 保存目标文件
这个包还有很多操作肯定不止于这些,例如替换图片,table columns,runs......,下面是英文官方文档,可以参考官方文档。
docxtpl英文手册