依赖
关于依赖包的安装请看文档
docxtpl
文档地址: https://docxtpl.readthedocs.io/en/latest/
注:它的github中有很多example实例,建议下载该项目在本地运行学习各种使用场景。
plotly
文档地址: https://plotly.com/python/
注: 导出静态图像需要依赖安装kaleido包,直接pip安装即可,具体内容可在plotly文档中查看到。
Jinja2
它的文档就不放了...
这里我再对依赖的所有库和版本做一个汇总,避免版本之间不兼容的问题:
docxtpl==0.11.2
kaleido==0.1.0
plotly==4.14.1
jinja2==2.10.3
python-docx==0.8.10
需求场景分析
最近有个新的接口需求,需要后端提供一个报表导出接口,该接口可以导出两种内容形式的word文档,文档内包含有图表数据:统计表格以及数据分析的折线图、柱状图以及饼图。
由于word的导出内容,其格式及描述信息基本是固定的,只有数据和图表会动态变化,因此调研后决定使用docxtpl库+Jinja2的方式使用模板语法对制作好的word模板文档进行内容填充生成最终文件,docxtpl库是依赖python-docx实现的,可以在制作好的模板文件中通过jinja2渲染字典,插入文字、表格、图片等数据。
虽然我们平时使用word的时候可以根据数据生成图表