51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4807|回复: 0
打印 上一主题 下一主题

[转贴] 我帮公司财务写了个“群发工资条”的 Python 脚本!

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:34
  • 签到天数: 1052 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-2-18 10:31:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    这是一个很好的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}月")
    复制代码
    结果如下:

    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 = ""
    3.   for cell in row:
    4.   if cell.column == "B":
    5.   continue
    6.   row_text += f"{cell.value}"
    7.   row_text += ""
    8.   print("\n")
    9.   print(row_text)
    复制代码
    结果如下:






    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-28 05:08 , Processed in 0.067216 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表