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].valuegender = row[1].valueposition = row[2].valuestart_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最新面试题

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/484580.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第1章 敏捷的基本概念

1.区分:敏捷、精益和看板方法 敏捷既可以说成是一种思维,也可以说是一种方法,它旨在项目推进的过程中,帮助团队提高效率,但除了敏捷,精益思想和看板方法也能够提高效率。   敏捷方法和看板方法都是面向组织级的&…

OpenHarmony中HDC相关操作源码

目录 一.背景 二.文件路径 三.相关指令位置 一.背景 本次主要记录OpenHarmony中的HDC相关操作的源码位置,为后续有hdc相关修改可以进行快速的查询 二.文件路径 首先找到hdc相关的代码逻辑模块位置,路径:xxx\developtools\hdc 如果想干掉hdc的所有功能,就是如下的patch d…

校企合作新模式:校招管理系统促进企业人才供需精准对接

近年来,随着高校毕业生就业形势的日益严峻,校企合作作为一种有效的人才培养模式,越来越受到社会各界的广泛关注。然而,传统的校企合作模式往往存在信息传递不畅、供需不匹配等问题,导致企业难以招到合适的人才&#xf…

【清华】世界模型综述:理解世界还是预测未来?

论文:https://arxiv.org/pdf/2411.14499 1. 引言 1.1 研究背景与意义 世界模型(World Models)的概念随着人工智能领域,尤其是多模态大型语言模型和视频生成模型的快速发展而受到广泛关注。这些模型被视为实现人工通用智能(AGI…

排序2(万字详细版)

一 快速排序 快速排序是Hoare于1962年提出的⼀种⼆叉树结构的交换排序⽅法,其基本思想为:任取待排序元素 序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩ 于基准值,右⼦序列…

智能交通(8)——腾讯开悟智能交通信号灯调度赛道

本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。 一.赛题介绍 赛题简介:在本地赛题中,参赛团队…

抖音矩阵系统快速部署指南/抖音矩阵系统源码分发,短视频矩阵账号管理系统开发部署—

抖音矩阵系统的源码分发与短视频账号管理平台的开发部署,要求通过对接官方API来实现功能的拓展。当前开发的账号矩阵管理系统专注于提供一键式管理多个账户的能力,支持定时发布内容、自动化关键词生成以实现搜索引擎优化(SEO)和霸…

社群借势与 AI 智能名片微信小程序的融合应用与发展策略

摘要:本文探讨了在社群运营中借势策略的运用,包括通过联谊活动和互换用户在不同社群间实现资源整合与协同发展。同时,引入 AI 智能名片微信小程序这一新兴工具,分析其在社群运营借势过程中的独特作用与应用模式,旨在为…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下,创建腾讯云短信发送工厂并命名为TencentSmsSender。记住,一定要在腾讯云短…

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态,在这种状态下,CPU只能执行用户态下的指令,并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态,内核是计算机系统的核心部分,CPU可以执行所有…

SpringBoot 架构下校园失物招领系统:精准定位校园失物去向

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第…

x86处理器编程模型

为x86处理器编写程序的时候, 必须要了解x86的内核寄存器 通用寄存器 后面才扩充到了32位,又要对以前的代码进行兼容, 所以之前16位结构保留了, BP与SP主要用于对栈空间进行操作, SI和DI用来进行数据的拷贝. 段寄存器 因为早期是16位的模式,只能到65535(64KB的空间),所以后来…

Maven核心概念

Maven 介绍 Maven 官方文档是这样介绍的 Maven 的: Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a projects build, reporting and documentation from a ce…

Ubuntu的pip怎么用

第一步:查看python3版本 第二步:安装pip 第三步:可以尝试使用pip list查看 也可以尝试安装 下面这条命令可以设置永久源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

第三十九篇——条件概率和贝叶斯公式:机器翻译是怎么工作的?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学中的概率,看似和我们的生活没关系,其实它却是…

计算机毕业设计Python轨道交通客流预测分析可视化 智慧交通 机器学习 深度学习 人工智能 爬虫 交通大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Spring Boot + MySQL 多线程查询与联表查询性能对比分析

Spring Boot MySQL: 多线程查询与联表查询性能对比分析 背景 在现代 Web 应用开发中,数据库性能是影响系统响应时间和用户体验的关键因素之一。随着业务需求的不断增长,单表查询和联表查询的效率问题日益凸显。特别是在 Spring Boot 项目中&#xff0…

Java 初学者的第一个 SpringBoot 系统

Java 初学者的第一个 SpringBoot 系统 对编程初学者而言,都存在一个 “第一个系统” 的问题。有些学习者找不到自己的 “第一个系统”,他们即使再努力也没有办法了解完整的系统,即使他们把教科书里的所有程序都跑通了。但是,面对…

【Vue3】详解Vue3的ref与reactive:两者的区别与使用场景

文章目录 引言Moss前沿AIVue 3响应式系统概述ref与reactive的基础概念ref与reactive的区别1. 数据类型2. 访问方式3. 响应式追踪机制4. 可变性5. 使用场景表格对比 ref与reactive的使用场景1. 选择ref的场景2. 选择reactive的场景 性能分析与优化建议1. 响应式系统的性能优势2.…

【笔记2-3】ESP32 bug:PSRAM chip not found or not supported 没有外部PSRAM问题解决

主要参考b站宸芯IOT老师的视频,记录自己的笔记,老师讲的主要是linux环境,但配置过程实在太多问题,就直接用windows环境了,老师也有讲一些windows的操作,只要代码会写,操作都还好,开发…