公司人事系统比较原始,无法让各部门自行查询年假使用情况。落后就要挨打,人事妹子只有花时间每个月从系统导出然后按部分区分,再发给部门经理和文员。虽然系统破旧,但这个按部门筛选和邮件发送还是可以让Python代劳,这样每个月要做的就是导出总表,然后运行一下Python程序,自动按部门生成新的子Excel表格,并自动发给相关部门。比起纯手工,还是省事不少啊。总表如下。
import pandas as pd
df = pd.read_excel("年假情况.xlsx")
df.head()
首先导入pandas
库。然后使用pd.read_excel
读取Excel文件,可直接将Excel文件读取为一个数据框(DataFrame)。可以理解数据框就是一张Excel表,请看上图,是不是很像我们常用的Excel表格呢?我们用df.head()
看一下它的前5行,以便观察是否有正确读取。
然后按不同的部门来将这些数据拆分成不同的表格并单独保存,以便通过邮件的方式发出。
#拆分Excel表,并单独保存
depts = df["部门"].unique()
for dept in depts:
df[df["部门"]==dept].to_excel("年假_按部门\年假情况_{}.xlsx".format(dept),index=False)
因为在总表中,每个部门有很多员工,因此部门的名字是重复的,我们只需要获得所有部门的名称一次就够了,unique()
就可以实现。df["部门"].unique()
可以理解为,从工作表中选取列名为“部门”的列,然后每个部门只取一次,然后存入depts这个数组。
depts
>>
array(['工程部', '生产部', '人事部', '总务部', '船务部', '关务部', '品质部', '物料部', '研发部',
'采购部'], dtype=object)
然后我们将部门的名称逐个传入数据表,并逐个保存成新的Excel文件。df.to_excel()
可实现将数据框存储为Excel文件。括号内的参数为需要存入的路径和文件名,此处我们希望把部门的名字放在文件名里面以便区分,所以使用格式化字符串函数.format
将部门的名称传入文件名。我们不想在Excel中显示数据框的索引,因此index
设为False
。分拆后的Excel表如下图所示,秒秒钟分拆成功。
然后,就可以写一个自动发送邮件的程序,实现一键精准投递年假信息给各部门了。自动发送邮件,后续再来探讨吧,敬请期待。
如果您有需要处理的问题,可发邮件到我邮箱:donyo@qq.com,一起探讨解决方案。
微信公众号(Python操作Office软件高效工作)输入“源文件”提取所有源文件及资料。