1.python-docx-template简介
我们知道可以使用python-docx库来创建word文档,但是对于文档的修改功能,还可以使用另一个库 python-docx-template 可以完成对word的修改工作。
python-docx-template 模块主要依赖两个库, python-docx用于读取,编写和创建子文档 , jinja2用于管理插入到模板docx中的标签 。 其基本思路是利用jinja2制作Word模板,并动态向模板中插入文字、图片、表格等内容。
安装所需要的库文件🙌
pip install docxtpl
2.创建Word文档,在文档里使用模板语言
首先创建一个word文档 test.docx,并设置好模板:
test.docx
这是一个模板:{{ template }} 这是一个Word文件
3.Python控制生成信息
这里给大家一段示例的代码,使用Hello World!来填充docx文件中的{{ template }}模板部分
from docxtpl import DocxTemplate # 打开docx文件 tpl = DocxTemplate('test.docx') # 要装入的数据信息 context = { 'template': 'Hello World!' } # 填充数据 tpl.render(context) # 保存文件操作 tpl.save('test1.docx')
检验成果👍
打开test.docx文件,现在显示如下:
这是一个模板:Hello World! 这是一个Word文件
4.内嵌图片
可以动态地将一个或多个图像添加到文档中。只需 {{ xxx }} 在模板中添加标记
只需要指定模板对象,图像文件路径以及可选的宽度和/或高度。对于高度和宽度,必须使用毫米(Mm),英寸(Inches)或点(Pt)类。
现在文档是这样的:
这是一个模板:{{ template }} 这是一个Word文件 这里插入一个图片:{{ myimage }}
编写内嵌图片的Python代码:
from docxtpl import InlineImage, DocxTemplate from docx.shared import Mm import jinja2 # 打开docx文件 tpl = DocxTemplate('test.docx') # 要装入的数据信息 context = { 'template': 'Hello World!', 'myimage': InlineImage(tpl, 'happy.jpg', width=Mm(20)), } jinja_env = jinja2.Environment(autoescape=True) # 填充数据 tpl.render(context, jinja_env) # 保存文件操作 tpl.save('test_temp.docx')
即使再小的帆,也能远航⛵