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

发布于:2024-12-08 ⋅ 阅读:(98) ⋅ 点赞:(0)

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

图片


网站公告

今日签到

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