前言
在工作中,有一项是将网站上的报告转化为docx文档,并且还要求需要具备特殊的样式。
若是人工进行复制粘贴,还要调整样式,耗时费力还易出错。并且这一项工作的频度还不定,可能一天四次或者一周一次。所以就开始思考是否能将其自动化。
最终用python的docxtpl库实现了Word文档自动化。
docxtpl介绍
docxtpl是python的一个包,主要通过对docx文档模板的加载,实现对docx的修改。
主要依赖:
- python-docx :读写doc文本
- jinja2:管理插入到模板中的标签
与python-docx不同的是,python-docx主要是用来创建文档,而docxtpl主要是用来修改文档。
可以通过以下命令进行安装。
1 | pip install docxtpl |
核心思想
完形填空。
实现思路
- 设计模板:按照要求,设计好模板docx文档。
- 规范数据:整理所需信息字段,规范api数据信息格式。
- 模板挖空:将docx文档中需要替换的内容使用两个花括号进行标注。
- 代码编写:请求api获得数据、数据对应、模板渲染。
- 导出文档。
模板准备
如下图所示,在设计好文档样式后,在文档模板中将想要替换的信息用花括号表示。
请求api
这一步主要是为了获得填充数据。
详情可见api请求
核心代码
1 | from docxtpl import DocxTemplate, InlineImage, RichText |
插入图片
本次实践过程中,需要插入在线图片,所以有了第一行的代码。
插入图片的功能主要是用到**InlineImage()**函数,其中width=Mm(140)是用以调整图片的大小。
1 | urllib.request.urlretrieve('https://xxx.png', 'img_name.png') |
写好以上代码后,直接在数据对应时使用title_img这个变量即可将图片渲染进去。
总结
学会以上内容后,就能够实现简单的文档自动化生成。关于目录、章节增减、常见问题等会在进阶篇讲到。