你是一名人力资源部门的员工,你需要根据一份Excel表格中的员工信息,为每位员工生成一份录用通知书。
Excel表格中包含了员工的姓名、性别、职位、入职日期等信息,你需要将这些信息填充到Word模板中,并生成独立的录用通知书文件。
我们可以使用Python的openpyxl和python-docx库来实现这个功能。
1. 准备工作
-
安装必要的库:
pip install openpyxl python-docx
-
准备Excel数据文件 employee_data.xlsx:

- 准备Word模板文件 offer_letter_template.docx:
准备Word模板文件 offer_letter_template.docx,例如:
尊敬的{姓名}先生/女士:
您好!
我们非常高兴地通知您,您已被我公司录用为{职位},入职日期为{入职日期}。
... (其他内容) ...
此致
敬礼!
[公司名称]
[日期]
2. 代码实现
from openpyxl import load_workbook
from docx import Document
from docx.shared import Inches
# 加载Excel文件
workbook = load_workbook("employee_data.xlsx")
sheet = workbook.active
# 加载Word模板文件
document = Document("offer_letter_template.docx")
# 遍历Excel中的每一行数据
for row in sheet.iter_rows(min_row=2): # 从第二行开始读取数据,跳过标题行
# 获取Excel中的数据
name = row[0].value
gender = row[1].value
position = row[2].value
start_date = row[3].value.strftime("%Y-%m-%d") # 将日期格式化
# 替换Word模板中的占位符
for paragraph in document.paragraphs:
paragraph.text = paragraph.text.replace("{姓名}", name)
paragraph.text = paragraph.text.replace("{职位}", position)
paragraph.text = paragraph.text.replace("{入职日期}", start_date)
# 根据性别调整称呼
if gender == "男":
for paragraph in document.paragraphs:
if "先生/女士" in paragraph.text:
paragraph.text = paragraph.text.replace("先生/女士", "先生")
else:
for paragraph in document.paragraphs:
if "先生/女士" in paragraph.text:
paragraph.text = paragraph.text.replace("先生/女士", "女士")
# 保存生成的Word文件
document.save(f"{name}_offer_letter.docx") # 以员工姓名作为文件名
print("录用通知书已生成!")
3. 代码解析
-
加载Excel文件和Word模板文件:使用openpyxl.load_workbook()和docx.Document()分别加载Excel和Word文件。
-
遍历Excel数据:使用sheet.iter_rows()遍历Excel表格中的每一行数据,从第二行开始 (跳过标题行)。
-
获取数据并格式化:获取每一行中的姓名、性别、职位和入职日期等信息,并将日期格式化为字符串。
-
替换占位符:遍历Word模板中的每个段落,使用字符串替换方法将占位符 (例如{姓名}) 替换为对应的Excel数据。
-
根据性别调整称呼:使用条件语句判断员工性别,并相应地替换Word模板中的称呼。
-
保存Word文件:使用document.save()方法保存生成的Word文件,以员工姓名作为文件名。
4. 运行结果
运行代码后,将会在当前目录下生成三个Word文件:张三_offer_letter.docx、李四_offer_letter.docx 和 王五_offer_letter.docx,每个文件的内容都根据Excel中对应员工的信息进行了填充。
总结
通过以上代码,我们可以轻松地读取Excel文件中的信息,并批量生成Word文档。这个方法可以应用于各种需要根据数据生成文档的场景,例如:
-
生成学生成绩单
-
生成产品说明书
-
生成合同协议
-
生成邮件合并文档
希望以上详细的描述和代码能够帮助你更好地理解和应用这个功能。
全套Python学习资料分享:
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

三、python入门资料大全

四、python进阶资料大全

五、python爬虫专栏

六、入门学习视频全套
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

七、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

八、python最新面试题
