数据画图分享

1,介绍

我们使用Python的Python-docx库可以自动写入文档,但是如果大致是一样的内容,我们可以使用docxtpl库,这个库是基于python-docx库和jinja2写的,可以渲染模板.我们需要批量创建word文件时, 使用docxtpl可以快速渲染出想要的word文件.类似于前端的渲染.只要在想要插入数据的地方插入类似于{{ a }}的标签,传入字典{{ “a”: 123 }} 就能在标签上渲染出数据123. docxtpl还支持图片,子文档等. 但是目前图片和子文档的支持还不够完善

2,使用

2.1 环境依赖

主要使用python的docxtpl包
安装

pip install docxtpl

2.2 基本使用示例

from docxtpl import DocxTemplate
doc = DocxTemplate("my_word_template.docx")
context = { 'company_name' : "World company" }
doc.render(context)
doc.save("generated_doc.docx")

导言

python-docx-template被开发出来,是因为python-docx的强大在于创建文档,而不是修改它们。

这个想法是开始于创建一个需要用MicrosoftWord生成的文档的示例,它可以像我们想要的那样复杂:如图片、索引表、页脚、页眉、变量,以及我们可以用Word做的任何事情。然后,当我们使用MicrosoftWord编辑文档时,直接在文档中插入类似于Jinja 2的标记。将文档保存为.docx文件(XML格式):它将是.docx模板文件。

现在,我们可以使用python-docx-template从这个.docx模板和将关联的上下文变量生成您想要的多个Word文档。

2.3表格类使用示例

模板关键语法:

{{%tr for row in table_1%}}
{{row.fileName}}
{{%tr endfor%}}

例:
在这里插入图片描述

传入示例:

"table_1":[

            {
                "fileName":"test1","fileNum":"123","sealName":"xxx","sealNum":"123"
            }
            
            ]

结果示例:

在这里插入图片描述

2.3,复杂表格

对于一些复杂表格,可采用模板与传入数据结合的方法去实现一些效果

例如:

在这里插入图片描述

在一行表格内实现多行数据,此处不能使用上面那种方式,因为docxtpl模板替换不能按列进行.当然,我们在制作模板时还是可以按行制作,然后把中间行线隐藏即可
如图:
在这里插入图片描述
但是在数据传入是,进行区别,即加上"\n"换行符,word可以自动换行来实现我们需要的效果
数据传入:

 "table_2": [
 {"content": "\n所属流程:流程1\n流程节点:XXXX\n决策人:B\n决策意见:XXXX\n决策时间:xxxxx\n"},
  
 {"content": "\n所属流程:流程1\n流程节点:XXXX\n决策人:B\n决策意见:XXXX\n决策时间:xxxxx\n"},
  
 {"content": "\n所属流程:流程1\n流程节点:XXXX\n决策人:B\n决策意见:XXXX\n决策时间:xxxxx\n"}]

效果如图:

在这里插入图片描述

  • 后续会讨论更复杂的模板,欢迎大家评阅.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值