终于,手把手教会 HR 实现 Python + Excel 「邮件自动化」发工资条了

简介: 终于,手把手教会 HR 实现 Python + Excel 「邮件自动化」发工资条了

想知道,怎样才能跟公司 HR 的关系处得更好嘛?

其实很简单,身怀绝技的我们,时刻都要提醒自己,要主动、热情地去帮助他人,世界才会更美丽,桃花才会朵朵开。

你看,每个月 HR 她都需要人肉去给所有同事发工资条,看着是不是就挺惨的?!

但……你是谁?你是技术大神啊,无所不能的,对吧?

抓住我,哦,不对,抓住机会,赶紧手把手教她用 Python 来实现批量发送工资条吧。你帮她提升了工作效率,不就可以提前下班了嘛,然后……那,你不就可以……

请仔细听题~

如果你们公司有 1000 人,每个月可爱的 HR 都会从财务那儿,拿到了所有人的工资数据,接着,我们应该怎么来处理呢?

其实,很简单,我们分两大部分跟来了解:

第一部分,使用 Pandas 处理 Excel 数据;

第二部分,设置邮箱和发送邮件。

第一部分 使用 Pandas 处理 Excel 数据

开始咯,咱先来看看,如何读取 Excel 数据,还有过滤数据。

比如,我们的工资表中,有一列是员工的姓名,如果我想根据他的名字,单独把他的信息提取出来,然后再生成新的 Excel 文件,怎么实现呢?

其实,也很简单,具体代码如下:

import os
import pandas as pd
# 根据 Excel 文件路径,读取 Excel 数据
data = pd.read_excel('/../../工资条.xlsx')
# 指定文件夹路径
dirname = '/../../employee'
if not os.path.exists(dirname):
    os.makedirs(dirname)
    
# 根据指定信息,过滤数据
employeeNames = ['张三', '李四', '王五']
for name in employeeNames:
    # 根据指定名字读取数据
    df = data.loc[data['姓名'] == name]
    # 根据名字,创建了路径
    filepath = os.path.join(dirname, f'{name}.xlsx')
    # 创建 Excel 写入器
    writer = pd.ExcelWriter(filepath)
    # 转为 Excel
    df.to_excel(writer, 'Sheet1')
    # 保存
    writer.save()

运行程序,效果如下:

第二部分 设置邮箱和发送邮件

2.1 邮件发送原理

我们先通过一张图,来简单了解下邮件发送的原理,根据标出来的序号,一共有 6 个步骤,感受一下发送邮件的整个工作流程,具体如下:

其中,SMTP 服务器,提供了邮件发送的服务。主要是帮咱们把本地的邮件,通过 SMTP 服务器,发送到对方的服务器上。

比如,用户 A 在 QQ 邮箱里写好了邮件,并通过 QQ 邮箱的服务器,将邮件发送到了 163 邮箱的服务器上,并存储在 163 邮箱内部存储空间中,等待被接收和读取。

另外,POP3 服务器,提供了邮件接收的服务。主要负责从邮箱内部存储空间中,取回并返回用户的邮件。

比如,用户 B 登录了 163 邮箱之后,就可以通过 POP3 服务器接收到自己的邮件了。

2.2 设置第三方邮件服务器

如果你们公司有可以访问公网的邮件服务器,那就直接用,要不,咱就直接用第三方的邮件服务器,比如 126 邮箱、163 邮箱、QQ 邮箱……都可以,设置细节几乎一样。

需要做一点点设置,非常简单的,我以 126 邮箱作为参考案例,登录邮箱后,在「设置」中,选择「POP3/SMTP/IMAP」,具体如下:

接下来的步骤,非常重要:

第一,开启服务;

第二,申请授权码(注意,只会显示一次,记录并保存好,旧的也可以删掉重新申请);

第三,SMTP 的服务器地址。

如何发送邮件?很简单的,我们先来分析一下步骤:

第一,我们需要用到 yagmail、datetime、pandas等模块儿,直接导入使用。

其中,yagmail用来操作邮箱,工资条需要通过邮箱发送给所有员工,datetime是用来获取当前系统的时间,最后的 pandas是用来操作 Excel 数据;

第二,我们先使用 Pandas 来读取 Excel 中的数据,备用;

第三,安装并导入 yagmail,然后用它来操作邮箱,安装命令 pip install yagmail;

第四,编辑、准备好要发送的邮件的内容;

第五,发送邮件。

注意:实际上,不同企业所出具的工资条明细,是不完全一样的,各有各的特色和细节。但基本上,都会包含个人信息、基本薪资、奖金提成、出勤、五险一金、实发金额等。下面案例中,我们将采用一份简化版的工资条信息进行演示。

import yagmail
import pandas as pd
from datetime import *
# 读取文件
df = pd.read_excel('/../../工资条.xlsx')
# 登录邮箱
# user 邮箱账号
# password 邮箱登录授权码
# host 邮箱 SMTP 服务器地址
yag = yagmail.SMTP(user="xxx@126.com", password='xxxxxxxx', host='smtp.126.com')
# 开启循环,读取数据
for index, rows in df.iterrows():
    
    # 对数据进行位置索引,从而在数据表中提取出相应的数据
    # [[index], :9] 表示我们截取前 9 列数据
    # to_html() 用于将结果转换成 html 代码
    table = df.iloc[[index], :9].to_html(header = True, index = False, border = "1px")
    table.replace("\n", "")
    
    # 拼接表格
    # 根据自己喜好,加上样式,可以更好看
    table_style = '<style>table{cellpadding :"0"; border-collapse:collapse;} th{width:11.1%; background-color:#FFB90F; text-align:center;} td{text-align:center;}</style>'
    
    # 邮件内容
    contents = [f"亲爱的 {rows['姓名']} 同事,你好:\n", 
                f"\t很开心,咱又奋战了一个月,工资已发放,请查收你 {date.today().year} 年 {date.today().month} 月的工资明细,\n\t如有疑问请及时与人事部门进行沟通,辛苦啦!", table_style + table]
    
    # 发送邮件
    yag.send(rows['邮箱'], f"{date.today().year} 年 {date.today().month} 月的工资明细", contents)

运行了代码后,在邮箱中,我们就可以看到个人的工资条信息了:

如果,您也学会了,欢迎来一个「三连」鼓励下呗,点赞、关注、转发,谢谢!

目录
相关文章
|
3月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
443 10
|
3月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
272 61
|
23天前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
2月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
4月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
232 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
117 4
|
3月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
4月前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
146 9
|
4月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
4月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
181 3

热门文章

最新文章