在Python中操作Word
生成请假条
1.准备一个文件“template.docx”,内容如下。
2.安装docxtpl库。
pip install docxtpl
3.执行代码,替换字典内容。
from docxtpl import DocxTemplate# 读取定义模板文件
tpl = DocxTemplate('template.docx')
# 创建子文档
sd = tpl.new_subdoc()
# 添加段落
p = sd.add_paragraph('本人身体不适需就医,恳请老师予以批准!给您带来的不便,敬请谅解。')
# 创建上下文
context = {'name': '张三','my_name': '李四','date': '2025年7月22日','content': sd}
# 渲染模板
tpl.render(context)
# 保存文件
tpl.save('output.docx')
4.生成结果如下所示。
批量生成录取通知书
1.准备Word模板和Excel表格数据(下述数据为代码随机生成,假设全部是湖南省内的院校)。
universities.xlsx
notification_template.docx (假设录取通知书格式是这样的,省略了一些东西)
2.执行代码,核心就是将Excel中的数据替换到Word模板中。
import pandas as pd
from docxtpl import DocxTemplate
import random# 读取Excel数据
df = pd.read_excel('universities.xlsx')
# print(df)
# Word生成模板
tpl = DocxTemplate('notification_template.docx')
# 数据处理
for i in range(len(df)):# 获取数据,单个学生信息(转成字典)data = df.loc[i].to_dict()# 假设开学时间在10号到25号中间number = random.randint(10, 25)# 日期date = '2025年9月' + str(number) + '日'# 创建上下文context = {**data, # 字典解包'开学时间': date}# print(context)# 渲染模板tpl.render(context)# 需要提前创建output文件夹tpl.save(f'output/{context["姓名"]}_录取通知书.docx')
3.在output文件夹中看结果。
4.随便打开一个生成的Word。
生成Word表格
1.Excel采用之前的universities.xlsx表格,word模板录取存档_template.docx如下所示。
生成表头
{%tc for col in col_lables %} {{col}} {%tc endfor %}
生成表格内容
{%tr for item in tbl_contents %}
{%tc for col in item.values()%} {{col}} {%tc endfor%}
{%tr endfor %}
2.执行代码
import pandas as pd
from docxtpl import DocxTemplate# 读取Excel数据
df = pd.read_excel('universities.xlsx')
# print(df)
tpl=DocxTemplate('录取存档_template.docx')
# 将数据转为字典(每条数据是一个字典
data=df.to_dict(orient='records')
context={'col_lables':[*df.columns],'tbl_contents':data
}tpl.render(context)
tpl.save('录取存档.docx')
3.结果如图所示。