zoukankan      html  css  js  c++  java
  • 当财务部的人会编程,会发生什么?Python实现自动化群发工资条

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    以下文章来源于数据分析与统计学之美 ,作者黄伟呢

    PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

     

    可以免费领取源码、项目实战视频、PDF文件等

     

    对于小公司,采用手动方式一个个发送邮件还是可以的。如果一个上百号,上千号,或者更大规模的公司,我们再一个个发送工资条邮件,就太浪费时间了。

    鉴于此,我写了一个这样的程序,实现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}月")

    结果如下:

     

    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是为了记录你的邮件地址和密码。第三行代码直接登录邮箱。

    4)准备要发送的正文

    由于发送的正文里面,需要我们发送一个带表格的邮件,这就需要我们了解一点前端知识。因此,我在最后面花一个章节为大家讲解。

    5)发送邮件

    yag.send(f"{email}",f"数据分析与统计学之美有限公司{date.today().year}-{date.today().month}月工资情况",contents)

    上述代码共有3个参数:第一个参数是收件人的邮箱;第二个参数是邮件的标题;第三个参数是发送的内容。

    关于html代码的特别说明

    会用Python发送邮件的人都知道,邮件正文内容可以写html代码。你可能觉得自己啥也不会,但是不用担心,我们不需要学习太高深的前端代码,做过爬虫的人耳濡目染,都能够看懂一些。

    1)自己写一个简单的前端代码

    我们可以直接用Pycharm创建一个新的html文件,里面会显示初始的前端代码,我们进行简单的添加,就可以获得一个表格啦!

     

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

     

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

     

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

     

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

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

    for row in sheet:
        row_text = "<tr>"
        for cell in row:
            if cell.column == "B":
                continue
            row_text += f"<td>{cell.value}</td>"
        row_text += "</tr>"
        print("
    ")
        print(row_text)

    结果如下:

     

    完整代码

    为了文章的完整性,我在文章最后放上我的代码。但是限于文章篇幅,最后我只粘贴一张图片,详细代码,大家可以去文末获取。

  • 相关阅读:
    Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) Finished D. Arpa and a list of numbers
    Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) C. Five Dimensional Points
    Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) B. Arpa and an exam about geometry
    Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) A. Arpa and a research in Mexican wave
    hdu 5510
    长沙理工大学第十二届ACM大赛
    Codeforces Round #336 (Div. 2) D. Zuma
    百(垃)度(圾)之星初赛B hdu6114
    百(垃)度(圾)之星初赛B hdu6119
    Codeforces Round #428C
  • 原文地址:https://www.cnblogs.com/hhh188764/p/13495903.html
Copyright © 2011-2022 走看看