Python批量生成个性化Word录用通知书

你是一名人力资源部门的员工,你需要根据一份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最新面试题

相关推荐
老衲有点帅7 分钟前
C#多线程Thread
开发语言·c#
C++ 老炮儿的技术栈15 分钟前
什么是函数重载?为什么 C 不支持函数重载,而 C++能支持函数重载?
c语言·开发语言·c++·qt·算法
jc_hook25 分钟前
Python 接入DeepSeek
python·大模型·deepseek
IsPrisoner33 分钟前
Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)
开发语言·后端·golang
Python私教39 分钟前
征服Rust:从零到独立开发的实战进阶
服务器·开发语言·rust
chicpopoo44 分钟前
Python打卡DAY25
开发语言·python
crazyme_61 小时前
深入掌握 Python 切片操作:解锁数据处理的高效密码
开发语言·python
邹诗钰-电子信息工程2 小时前
嵌入式自学第二十一天(5.14)
java·开发语言·算法
Code_流苏2 小时前
《Python星球日记》 第69天:生成式模型(GPT 系列)
python·gpt·深度学习·机器学习·自然语言处理·transformer·生成式模型
恋猫de小郭3 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin