当前位置:   article > 正文

用Python 给财务写了个“群发工资条”,效果不错

写一个发工资条的程序

作者 | 黄伟呢

来源 | 数据分析与统计学之美(ID:gh_21c25c7e71d0)


本文介绍

这是一个很好的 Python 自动化的案例。对于小公司,采用手动方式一个个发送邮件还是可以的。如果一个上百号,上千号,或者更大规模的公司,我们再一个个发送工资条邮件,就太浪费时间了。鉴于此,我写了一个这样的程序,实现 Python 自动化群发工资条的功能。

原始数据源如下:

最终效果如下:

看到这里,你肯定也觉得很好玩儿吧?那么这样一个自动化程序,应该怎么做呢?接着往下看。


流程分析

其实这样一个代码,总结下来,就只有如下5步:
① 导入相关模块;
② 读取 Excel 表格;
③ 登录邮箱;
④ 准备要发送的邮件正文;
⑤ 发送邮件;

1)导入相关模块
  1. from openpyxl import load_workbook    # 用于操作Excel的模块
  2. import yagmail   # 用于存储邮箱地址和密码的模块
  3. import keyring   # 用于记录你邮箱地址和密码的模块
  4. from datetime import *   # 用于获取当前系统时间的模块
2)读取 Excel 表格
  1. # 加载Excel文件
  2. wb = load_workbook("群发工资条.xlsx",data_only=True)
  3. sheet = wb.active
  4. print(sheet)
  5. -------------------------------------------------------
  6. for row in sheet:
  7.     row_text = ""
  8.     for cell in row:
  9.         if cell.column == "B":
  10.             continue
  11.         row_text += f"{cell.value},"
  12.     print(row_text)
  13. ------------------------------------------------------
  14. print("年:", date.today().year)
  15. print("月:", date.today().month)
  16. print(f"{date.today().year}-{date.today().month}月")
  17. 结果如下:
3)登录邮箱
  1. yagmail.register("1127421544@qq.com","flmyucvntuvbjbcb")
  2. pwd = keyring.get_password("yagmail","1127421544@qq.com")
  3. 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 文件,里面会显示初始的前端代码,我们进行简单的添加,就可以获得一个表格啦!

最终在浏览器中显示效果如下:

从上图中根本看不出这是一个表格,那是因为我们没有为它设置一个样式,下面要做的就是为表格设置样式。

最终在浏览器中显示效果如下:

2)在 Python 中怎么写前端代码

从上图可以看出,整个前端代码就是用一些列的标签组成,同时标签都是成对出现的。因此,在 Python 中写前端代码时,只需要在对应位置添加对应的标签即可。

  1. for row in sheet:
  2.     row_text = "<tr>"
  3.     for cell in row:
  4.         if cell.column == "B":
  5.             continue
  6.         row_text += f"<td>{cell.value}</td>"
  7.     row_text += "</tr>"
  8.     print("\n")
  9.     print(row_text)

结果如下:

完整代码

为了文章的完整性,我在文章最后放上我的代码。但是限于文章篇幅,最后我只粘贴一张图片。


  1. 更多精彩推荐
  2. ☞征战云时代,为什么安全是关键命题?
  3. ☞华为麒麟成“绝唱”,造芯太难了!
  4. 16岁开宝马,19岁创立自己的电脑公司,戴尔传奇
  5. ☞算法实现太难了?机器学习也需要开源软件
  6. ☞数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!
  7. ☞小心!你可能玩了假的DeFi
  8. 点分享点点赞点在看
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/432529
推荐阅读
相关标签
  

闽ICP备14008679号