想知道,怎样才能跟公司 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)# 转为 Exceldf.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)

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

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

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

  1. Linux 小知识翻译 - 「邮件服务器」

    这次聊聊「邮件服务器」. 邮件服务器上通常会运行2个服务端软件,「SMTP服务器」和「POP服务器或者IMAP服务器」. 这2个东西,也许使用邮件客户端的人立马就明白了.因为设置邮件客户端的时候,需要 ...

  2. 腾讯云「邮件证书」重磅发布!从此告别邮件安全漏洞

    电子邮件的普遍应用,有效提高了我们工作和生活的通信效率:但也衍生出"邮件篡改.病毒邮件.垃圾邮件.邮件炸弹"等一系列安全问题.下图中的一系列数据,更是直观揭露了人们邮件安全意识薄弱 ...

  3. 手把手教会你使用Python进行jieba分词

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 疏影横斜水清浅,暗香浮动月黄昏. ...

  4. 爆肝200天!18岁上海高中生自制机器人,250行Python代码「注入灵魂」

      新智元报道   来源:bilibili 编辑:yaxin [导读]十八岁的你在做什么?凌十七,18岁,耗时200天,用树莓派DIY机器人.这位B站up主爆火出圈,纯手工自制塑料外壳,焊接钢架,25 ...

  5. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 来源:Springboot使用POI实现导出Excel文件示例的搜索结果-阿里云开 ...

  6. 超实用,精心整理了34个Python+Excel+Word+PDF自动化库!

    本次内容涵盖了Excel.Word.PPT.ODF.PDF.邮件.微信.文件处理等所有能在办公场景实现自动化的库,希望能够对大家有所帮助. Python Excel自动化库 1.xlwings 库 官 ...

  7. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  8. python运营日报邮件自动化

    ´ 1.  导读 相信大家对邮件并不陌生,邮件已经成为我们平时工作中重要的沟通渠道,极大地方便了人与人之间的沟通与交流.电子邮件可以是文字.图像.声音等多种形式,用户可以从中得到大量信息. 而今天我要 ...

  9. 对比学习,用Excel和Python绘制「棒棒糖图」

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 长安一片月,万户捣衣声. 大家好, ...

  10. 如何用 Python 攻克「最强大脑」

    最强大脑之[七阶立方密码] 在 2018 年<最强大脑之燃烧吧大脑>节目中,来自清华大学的杨易和来自北京大学的 刘宇进行了个人淘汰赛,两个人所要挑战的项目是"七阶立方密码&quo ...

最新文章

  1. 各种机器学习方法的优缺点
  2. 如何有效地防止网站和手机APP的数据被采集?
  3. 64位环境编译DiskSim 4.0
  4. 计算机组成801pan,计算机组成06801.ppt
  5. Go基础系列:构建go程序
  6. VTK:Utilities之SaveSceneToFile
  7. 【酒桌文化】座次、上菜、喝酒的规矩
  8. 小程序 、h5图片铺满div,自适应容器大小
  9. 判断运营商_三大通信运营商步调一致,大流量互联网套餐陆续成绝版
  10. 存储进阶:怎么才能保证 IO 数据的安全?
  11. 通道控制方式,通道指令与通道程序
  12. 开发指南专题二:JEECG微云快速开发平台JEECG框架初探
  13. 掌握中台系统,需要了解哪些技术?
  14. java中连接字符串_Java中几种方式连接字符串的方法
  15. python视频换脸下载_FaceSwap下载|Faceswap(AI视频换脸软件) v1.0官方版(附使用教程)...
  16. ThingsBoard设备在线状态-active服务端属性分析
  17. bandizip修改压缩文件内容_BandiZip如何进行解压缩文件?BandiZip解压缩流程
  18. 三星6818核心板接口众多兼容三星4418开发板
  19. macos android大小写,Git(MacOS)区分大小写覆盖问题
  20. OSChina 周四乱弹 ——1000万没了!因为这个孩子在家这样

热门文章

  1. 【ENVI】shp文件裁剪需要注意的问题
  2. Python文件去重代码
  3. iOS 安装包瘦身 (上篇)
  4. 利用CMD命令关闭进程
  5. HTML5 Metadata content(文档元数据)
  6. ZipEntry 类,zip的压缩与解压
  7. Python+OpenCV3.3图像处理视频教程-贾志刚-专题视频课程
  8. 浏览器上模拟qq的消息提示声/网页播放声音
  9. 单片机仿真软件proteus实验测试,基于单片机仿真软件proteus的流水灯实验报告.doc...
  10. OpenCms8.5 安装