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

相关推荐
Hylan_J2 小时前
【VSCode】MicroPython环境配置
ide·vscode·python·编辑器
软件黑马王子2 小时前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
莫忘初心丶2 小时前
在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
python·ubuntu·flask·gunicorn
闲猫2 小时前
go orm GORM
开发语言·后端·golang
李白同学4 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?5 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
失败尽常态5235 小时前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447745 小时前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农5 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿5 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法