之前一直用python docx 设置word 格式设置的好辛苦,弄了半天也不知道表格允许跨页隔断和各页顶端以标题行显示应该怎么实现
然后发现大家都是用docxtpl这个包直接设置模板导入使用的真的好方便啊
1.直接新建一个word 文档把你想要设置的格式用wor设置好,包括页眉页脚啊,页边距啊,纸张大小啊,字体字号,颜色,加粗斜体 行高列宽啥的统统定义好,然后在表格中加入希望用python来进行填充的字段
1) 这个字段只出现一次的,单个字段eg report name/batch no啥的 在它应该出现的那个cell中写{{variable name}}
母本 | {{name}} |
编号 | {{no}} |
这个{{variable name}} 就是你在python 中的变量名
2) 有多行数据需要插入的
首先需要第一行合并单元格 告诉python 从这行的下面开始插入,并且有这么几列需要插入
下面一行就是需要插入的variable name
最后一行也需要合并单元格 告诉python 到这行就结束啦
{%tr for row in data%} | ||
{{row.step}} | {{row.bp}} | {{row.x} |
{%tr endfor %} |
3) 有多列数据需要插入的
和行差不多
{%tc for col in cols%} | {{col}} | {%tc endfor %} |
然后我的template就搞定了接下来就是python写啦
2. Python part
1) 打开template,处理好要加进template的data
tpl=DocxTemplate('./../tpl.docx')
context={"name":report_name,"no":batch,"data":data} ##data 就是json 格式的data
##data 长这样
## data=[{'step': '1.14',
## 'bp': '二氯甲烷',
## 'x': '',},
## {'step': '3.14',
## 'bp': '湿品',
## 'x': '1'}]
2) render 一下template
tpl.render(context)
tpl.save('./.../table.docx')
好了结束!