java获取excel名称框_实例42_从Excel总表中分割10个部门的年假数据 PythonOffice

公司人事系统比较原始,无法让各部门自行查询年假使用情况。落后就要挨打,人事妹子只有花时间每个月从系统导出然后按部分区分,再发给部门经理和文员dae84ce57706ee7efe6b1401ba1ab0c4.png。虽然系统破旧,但这个按部门筛选和邮件发送还是可以让Python代劳,这样每个月要做的就是导出总表,然后运行一下Python程序,自动按部门生成新的子Excel表格,并自动发给相关部门。比起纯手工,还是省事不少啊e97acc60da2313fb36e96739acd9f679.png。总表如下。

dbe4127996cd834e8ef02fc7ae63f19d.png

import pandas as pd
df = pd.read_excel("年假情况.xlsx")
df.head()

9b448cea86224a55097ea2da8ccb1e8a.png

首先导入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表如下图所示,秒秒钟分拆成功2a17eebf77a4349f6d42f972d959bf3c.png

0c64ffb1651bdbdc4f21621747b83c06.png

然后,就可以写一个自动发送邮件的程序,实现一键精准投递年假信息给各部门了。自动发送邮件,后续再来探讨吧,敬请期待。

如果您有需要处理的问题,可发邮件到我邮箱:donyo@qq.com,一起探讨解决方案。

微信公众号(Python操作Office软件高效工作)输入“源文件”提取所有源文件及资料。

3255c0948c2f98ec9c922dc1ebf4e3cf.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值