中年|我帮公司财务写了个“群发工资条”的Python脚本


中年|我帮公司财务写了个“群发工资条”的Python脚本
本文插图

作者 | 黄伟呢
来源 | 数据分析与统计学之美
介绍 这是一个很好的Python自动化的案例 。 对于小公司 , 采用手动方式一个个发送邮件还是可以的 。 如果一个上百号 , 上千号 , 或者更大规模的公司 , 我们再一个个发送工资条邮件 , 就太浪费时间了 。 鉴于此 , 我写了一个这样的程序 , 实现Python自动化群发工资条的功能 。
原始数据源如下:
最终效果如下:
中年|我帮公司财务写了个“群发工资条”的Python脚本
本文插图

看到这里 , 你肯定也觉得很好玩儿吧?那么这样一个自动化程序 , 应该怎么做呢?接着往下看 。
流程分析 其实这样一个代码 , 总结下来 , 就只有如下5步:
① 导入相关模块;
② 读取Excel表格;
③ 登录邮箱;
④ 准备要发送的邮件正文;
⑤ 发送邮件;
1)导入相关模块 from openpyxl import load_workbook # 用于操作Excel的模块
import yagmail # 用于存储邮箱地址和密码的模块
import keyring # 用于记录你邮箱地址和密码的模块
from datetime import * # 用于获取当前系统时间的模块
2)读取Excel表格 # 加载Excel文件
wb = load_workbook("群发工资条.xlsx",data_only=True)
sheet = wb.active
print(sheet)

-------------------------------------------------------
for row in sheet:
row_text = ""
for cell in row:
if cell.column == "B":
continue
row_text += f"{cell.value},"
print(row_text)
------------------------------------------------------
print("年:", date.today.year)
print("月:", date.today.month)
print(f"{date.today.year}-{date.today.month}月")
结果如下:
中年|我帮公司财务写了个“群发工资条”的Python脚本
本文插图

3)登录邮箱 yagmail.register("1127421544@qq.com","flmyucvntuvbjbcb")
pwd = keyring.get_password("yagmail","1127421544@qq.com")
yag = yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com",password=pwd)
需要注意的是:第一行代码是用于存储你的邮件地址和密码 。 第二行代码使用keyring是为了记录你的邮件地址和密码 。 第三行代码直接登录邮箱 。
关于Python怎么发送邮件 , 我之前写了一篇文章 , 进行了详细的介绍 , 下方是这篇文章的链接 , 大家可以参考 。
Python发邮件:http://suo.im/60ylZ1
4)准备要发送的正文
由于发送的正文里面 , 需要我们发送一个带表格的邮件 , 这就有必要我们了解一点前端知识 。 因此 , 我在最后面花一个章节为大家讲解 。
5)发送邮件
yag.send(f"{email}",f"数据分析与统计学之美有限公司{date.today.year}-{date.today.month}月工资情况",contents)
上述代码共有3个参数:第一个参数是收件人的邮箱;第二个参数是邮件的标题;第三个参数是发送的内容 。
关于html代码的特别说明 会用Python发送邮件的人都知道 , 邮件正文内容可以写html代码 。 你可能觉得自己啥也不会 , 但是不用担心 , 我们不需要学习太高深的前端代码 , 做过爬虫的人耳濡目染 , 都能够看懂一些 。
1)自己写一个简单的前端代码 我们可以直接用Pycharm创建一个新的html文件 , 里面会显示初始的前端代码 , 我们进行简单的添加 , 就可以获得一个表格啦!
中年|我帮公司财务写了个“群发工资条”的Python脚本
本文插图

最终在浏览器中显示效果如下:
从上图中根本看不出这是一个表格 , 那是因为我们没有为它设置一个样式 , 下面要做的就是为表格设置样式 。
中年|我帮公司财务写了个“群发工资条”的Python脚本
本文插图

最终在浏览器中显示效果如下:
2)在Python中怎么写前端代码 从上图可以看出 , 整个前端代码就是用一些列的标签组成 , 同时标签都是成对出现的 。 因此 , 在Python中写前端代码时 , 只需要在对应位置添加对应的标签即可 。
for row in sheet:
row_text = "
" for cell in row:
if cell.column == "B":
continue
row_text += f"
{cell.value}" row_text += "
" print("")
print(row_text)
结果如下:
完整代码 完整代码获取:https://pan.baidu.com/s/1oE18u7deeztHCGPIApaVkA
提取码:3wd1
中年|我帮公司财务写了个“群发工资条”的Python脚本
本文插图

声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。邮箱地址:newmedia@xxcb.cn
【中年|我帮公司财务写了个“群发工资条”的Python脚本】


    推荐阅读