龙空技术网

HR小姐姐福利,用Python教你实现excel+邮箱的批量工资条发送

菜鸟学python 174

前言:

而今兄弟们对“python发送文件给对方”可能比较讲究,大家都需要剖析一些“python发送文件给对方”的相关文章。那么小编也在网上收集了一些关于“python发送文件给对方””的相关内容,希望朋友们能喜欢,朋友们一起来了解一下吧!

大家好,我是菜鸟哥!今天给大家安利一个干货!

在职场办公中,能够利用python来实现自动化办公的场景非常之多,可以说,学会了利用python来帮助自己实现自动化的办公,就能够节省自己大量的时间。想想看,别人花一天的时间在进行大量而重复的操作。

而你却可以敲敲代码,分分钟就可以让程序来帮你搞定。然后剩余的时间就可以喝茶摸鱼,这样的生活岂不快哉?

01.业务场景

很多小伙伴可能都遇到通过邮件来向同事或者朋友们发送信息。例如财务小姐姐们的工资条发放。就是一个比较典型的应用场景。需要利用excel+邮箱的组合来完成工资条的发放,财务需要将数据写入到excel表格中进行统计,同时需要将每位员工的工资条数据,发送到各位员工的邮箱当中。

02.Python办公自动化

要利用python实现自动化的办公,我们首先来看一下,整个流程是如何实现的吧:

上图给出的便是工资条的自动化邮箱发送,所需要的一些基本流程。大家可以看到,流程主要分为了excel的操作以及邮箱的操作两部分的内容。

03.程序的实现

对于excel部分的操作。我们首先需要有工资条的具体内容信息,包含了员工工资的一些基本信息,例如“姓名 基本工资 出勤天数 ”等内容。

这里需要将邮箱的数据从工资条数据中独立出来,一方面工资条中不需要携带邮箱数据,另一方面,将邮箱数据独立出来,可以方便财务进行邮箱内容和格式的审查,确保发送邮箱的正确。毕竟万一发错了邮箱数据,那可是非常严重的一件事情。

将工资条数据写入到excel文件的自动化过程,菜鸟哥采用的是openpyxl库,它可以处理xlsx格式的Excel(2007版之后)文件。大家可以通过pip install openpyxl的命令进行安装。

上图的程序,将除邮箱以外的数据写入到本地的excel文件当中。

首先,利用openpyxl库来创建一个xlsx文件工作簿(19行)。然后在工作簿中,创建一个工作表,并命名为Sheet1(20行)。将title中的序号、姓名等信息写入到工作表当中(21行)。接下来就是将每一名的员工数据通过for循环的方式来添加到工作表当中,然后保存工作簿(22-25行)。

添加完成后的结果如下图所示:

接下来我们通过打开xlsx文件,来将我们的邮箱数据逐个地写入到指定的位置。

程序首先是利用load_workbook函数来打开我们创建的工作簿(29行)。然后同样是选中“Sheet1”工作表,并命名为mytables(30行)。接下来在第一行中,通过cell函数,来添加标题名“邮箱”(31行)。同样的,对于每名员工的邮箱数据,也通过for循环的方式来添加到邮箱,并保存工作簿的内容(32-35行)。

这里我们重点来解释一下cell函数的用法。

cell函数通过指定行和列的方式,来为工作表中的指定单元格添加或者是更改内容。cell函数的行和列是从1开始的。例如我们对于“邮箱”标题的添加。

mytables.cell(row=1, column=len(title)+1).value = "邮箱"  # 在标题中添加“邮箱”

其中row=1,column为12。这样就可以为工作表中第一行第12列的单元格添加数据。

通过程序添加邮箱之后的excel表格内容,如下图所示:

可以看到,邮箱数据被正确的添加到excel的表格中去。

04.邮箱发送

使用python来发送邮件的思路其实和日常通过网页客户端来发送邮件一样,过程都是,登录邮箱 —>撰写邮件内容 —>点击 发送。以下为邮件发送整个过程的思维导图。

通过python来发送邮件,我们需要使用到的python库为smtplibemail

smtplib库利用SMTP的邮箱传输协议操作,在邮件发送的过程中实现服务器之间的相互通信。大家可以将其理解为邮件的投递员。email库则是帮助我们撰写邮件信息,例如邮件主题,邮件内容等信息,大家可以理解为邮件的打包员。

接下来,为了实现脚本的邮件传输功能,大家需要在邮箱中开启授权码。这里菜鸟哥以网易邮箱为例。

在网页版的网易邮箱中,按照上述的操作步骤,即可获取到网易邮箱的授权码。

接下来就可以利用excel+邮箱的结合,来实现自动化的工资条发送。

程序首先设置了邮箱服务器所需要的信息,包括了邮箱的用户名,以及邮箱的授权码(41-44行)。

这里的mail_host大家不需要改动。sender则是发送方的邮箱名。例如1233344444@163.com。而mail_user则是sender中@符号前面的内容,例如1233344444。mail_pass是前面通过邮箱设置开通的授权码。

程序设置了邮件内容的模板格式,并通过openpyxl库来打开了excel文件,并读取”Sheet1“工作表(46-49行)

程序的后半部分,首先是通过smtplib库来连接并登录邮箱服务器(52-54行);接下来就是通过读取”Sheet1“表当中的信息,来构建邮件的文本内容。并通过email库来设置邮件的主题,发送方以及接收方的邮件地址(55-64行)。通过for循环的方式向每一位员工发送工资条信息;

当邮件全部发送完毕后,邮箱推出,并打印出成功的信息(66-67行);如果邮件发送失败,则及时打印出错误的信息,并推出程序,方便及时查看程序所发生的具体错误(68-70行)。

05.效果展示

点击运行程序后,程序成功执行,接收方接受到的邮件如下图所示。

总结

可以看到,程序完美地完成了自动化工资条的发放工作,每个同事都及时地收到了工资条信息。利用自动化的办公方式,也将我们从繁重单调的工作中解放出来。

原创不易,希望大家在留言区捧个场支持一下,月底统计常来留言的同学送书,给个三连哈!你的支持,就是我原创的最佳动力!

标签: #python发送文件给对方