肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

高效办公自动化:Python批量生成个性化邀请函全攻略

假设一个工作中的场景,我有一个邀请函模板,是word文档,

尊敬的 < 姓名 > < 性别 >:

… 邀请函内容 …

< 今天日期 >

然后又有一个邀请人名单,存在一个excel文档中。怎么利用python批量生成相应的邀请函呢?

韩梅梅

女士

李磊

先生

读取邀请人名单

定义一个函数,返回一个姓名+称呼的列表

import pandas as pd
……
def read_excel_to_tuples(file_path):
 try:
 # 读取Excel文件,header=none表示第一行不是标题
 df = pd.read_excel(file_path,header=None)

 # 检查是否有至少两列
 if len(df.columns) < 2:
 raise ValueError("Excel文件需要至少两列数据")

 # 获取第一列和第二列数据
 names = df.iloc[:, 0] # 第一列
 titles = df.iloc[:, 1] # 第二列

 # 创建元组列表
 result = list(zip(names, titles))

 return result

 except Exception as e:
 print(f"发生错误: {e}")
 return []

list = read_excel_to_tuples('./execlfiles/name.xlsx')

#输出
[('韩梅梅', '女士'), ('李磊', '先生')]

通过输出的内容,可以看出上面那个函数测试通过。

安装python-docx库

执行pip install python-docx命令安装python-docx库,用于读取word文档并保存为新的文档。需要注意的是docx2python 库只是用于提取word文档内容。


读取模板内容,并批量生成相应邀请函

from docx import Document
……
# 读取邀请函模板
new_doc = Document('./wordfiles/invit.docx')
for name,call in list:
 for paragraph in new_doc.paragraphs:
 if "< 姓名 >" in paragraph.text:
 paragraph.text = paragraph.text.replace("< 姓名 >", name)
 if "< 性别 >" in paragraph.text:
 paragraph.text = paragraph.text.replace("< 性别 >", call)
 if "< 今天日期 >" in paragraph.text:
 paragraph.text = paragraph.text.replace("< 今天日期 >", '2025-7-1')
 new_doc.save(f'./wordfiles/{name}.docx')

这段代码先读取模板,再遍历前面步骤所获得的列表,替换所需要的内容,最后保存为一个正式邀请函


总结

这篇展示了如何用python的pandas和python-docx库,批量生成想要的文档内容。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言