python如何批量处理excel_Python 实现批量分类汇总并保存xlsx文件

4ffce04d92a4d6cb21c1494cdfcd6dc1-31.png上一篇文件用VBA介绍了如何实现一键按列分类汇总并保存单独文件,代码有几十行,而且一旦数据量多了,效果可能不尽如人意。

今天就来给大家说说如何用python来实现这个效果,先给大家看看效果:

4ffce04d92a4d6cb21c1494cdfcd6dc1-1.gif

代码只有十几行,效果要提升好多倍,这也是使用python的优势所在。

思路与代码详解

核心思路基本和VBA的一致:读取excel数据 – 获取“归属事业部”列中事业部种类数 – 按每个事业部进行整行提取 – 保存xlsx文件。

1、这里使用的是python中的pandas数据处理库,这个是在数据处理界非常牛逼的一个工具库,使用之前需要导入库。

import pandas as pd

2、读取excel的数据。读取”拆分实例.xlsx”这个excel中,sheet名字为”全国客户明细”的数据,将读取的内容赋值给df。

df = pd.read_excel("拆分实例.xlsx",sheet_name="全国客户明细")

3、获取“归属事业部”列的种类数,使用pandas库的unique方法,将所有事业部的名字赋值给变量group_names。

group_names=df["归属事业部"].unique()

4、将某个事业部的数据整行提取出来保存成xlsx文件,并按事业部的名字进行命名。

df_group=df.groupby(by=['归属事业部']).get_group(group_name).reset_index(drop=True)

df_group.to_excel(".\拆分结果\\"+group_name+".xlsx")

5、遍历每一个事业部,进行同样的操作。

for group_name in group_names:

完整代码如下:

import pandas as pd

import time

start = time.time()

df = pd.read_excel("拆分实例.xlsx",sheet_name="全国客户明细")

group_names=df["归属事业部"].unique()

for group_name in group_names:

df_group=df.groupby(by=['归属事业部']).get_group(group_name).reset_index(drop=True)

df_group.to_excel(".\拆分结果\\"+group_name+".xlsx")

elapsed = (time.time() - start)

print("完成,共花费时间为:",elapsed)

优化

上面这个代码生成的excel,数据是没有任何问题,但是单元格格式比较简陋,甚至可以说“丑”。

4ffce04d92a4d6cb21c1494cdfcd6dc1-32.png

如果需要如下图像生成VBA的比较美观的样式,要怎么弄呢?需要做一些格式上的处理。

4ffce04d92a4d6cb21c1494cdfcd6dc1-33.png

可以新建一个“模板”文件,

4ffce04d92a4d6cb21c1494cdfcd6dc1-34.png

然后调用openpyxl库将分类的数据dataframe写入到模板文件中,设置边框等格式,另存为xlsx文件即可。

4ffce04d92a4d6cb21c1494cdfcd6dc1-35.png

效果如下:

4ffce04d92a4d6cb21c1494cdfcd6dc1-2.gif

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值