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最新面试题

相关推荐
番茄小能手几秒前
【全网唯一】C# 纯本地离线文字识别Windows版dll插件
开发语言·c#
梁诚斌19 分钟前
使用OpenSSL接口读取pem编码格式文件中的证书
开发语言·c++
博观而约取33 分钟前
Django ORM 1. 创建模型(Model)
数据库·python·django
瓜子三百克37 分钟前
Objective-C 路由表原理详解
开发语言·ios·objective-c
幽蓝计划1 小时前
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
开发语言·harmonyos
伍哥的传说1 小时前
鸿蒙系统(HarmonyOS)应用开发之实现电子签名效果
开发语言·前端·华为·harmonyos·鸿蒙·鸿蒙系统
小张成长计划..2 小时前
数据结构-栈的实现
开发语言·数据结构
精灵vector2 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
旷世奇才李先生2 小时前
Lua 安装使用教程
开发语言·lua
Zonda要好好学习2 小时前
Python入门Day2
开发语言·python