在Python中操作Word

发布于:2025-07-24 ⋅ 阅读:(21) ⋅ 点赞:(0)

生成请假条

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.结果如图所示。


网站公告

今日签到

点亮在社区的每一天
去签到