乐于分享
好东西不私藏

Excel太多,手动拆分累成狗?Pyson让你一杯咖啡的功夫全自动搞定!

本文最后更新于2026-03-11,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

Excel太多,手动拆分累成狗?Pyson让你一杯咖啡的功夫全自动搞定!

大家好,我是你们的Python办公助手。

上篇文章教大家用Python合并多个Excel文件,不少读者反馈:能不能来个拆分的教程?毕竟合并简单,拆分才是真正的噩梦——一个几百兆的销售总表,要按部门拆成十几个文件,手动复制粘贴一上午就没了。

今天它来了!用Python批量拆分Excel,不管你要按部门、按月份还是按地区拆分,10行代码全自动搞定。小白也能学会,因为代码都是现成的,你改个路径就行!

一、什么时候需要拆分Excel?

举个真实案例:

小王是公司销售助理,每月要处理一张“全国销售总表”,里面有几千行数据,包含“销售部门”、“销售员”、“销售额”、“日期”等列。老板要求:每个部门单独发一份数据给他们自己核对。

以前小王怎么做?筛选部门A,复制,新建文件,粘贴;再筛选部门B,复制,新建文件,粘贴……十几个部门搞下来,眼睛都花了,还经常漏掉几行。

用Python:2秒,所有部门文件自动生成,还带原表头。

二、准备工作

1. 安装Python库

打开命令提示符(Win+R输入cmd),依次输入:

“`bash
pip install pandas openpyxl
“`

· pandas:核心数据处理库。
· openpyxl:读写Excel文件的引擎(支持.xlsx格式)。

2. 准备测试文件

在D盘新建一个文件夹,比如D:\销售数据,里面放一个Excel文件,叫全年销售总表.xlsx。假设数据如下:

销售部门 销售员 销售额 日期
销售一部 张三 10000 2025-01-05
销售二部 李四 15000 2025-01-06
销售一部 王五 8000 2025-01-07
销售三部 赵六 12000 2025-01-08
… … … …

我们的目标:按“销售部门”拆分成多个文件,每个文件只包含该部门的数据。

三、手把手写代码

第1步:导入库

“`python
import pandas as pd
import os
“`

第2步:读取总表

“`python
# 修改成你的文件路径
file_path = r’D:\销售数据\全年销售总表.xlsx’
df = pd.read_excel(file_path)

# 看看前几行,确认读取成功
print(df.head())
“`

运行后如果显示表格前5行,说明读取成功。

第3步:获取所有需要拆分的部门

“`python
# 假设“销售部门”列名就是“销售部门”
departments = df[‘销售部门’].unique()   # 返回不重复的部门列表
print(f”共有 {len(departments)} 个部门:{departments}”)
“`

第4步:循环拆分并保存

“`python
# 指定输出文件夹(和原文件同一个文件夹)
output_dir = r’D:\销售数据\拆分结果’
os.makedirs(output_dir, exist_ok=True)   # 如果文件夹不存在,自动创建

for dept in departments:
    # 筛选出当前部门的数据
    dept_data = df[df[‘销售部门’] == dept]
   
    # 构造输出文件名,例如“销售一部.xlsx”
    output_file = os.path.join(output_dir, f'{dept}.xlsx’)
   
    # 保存到Excel,不要行索引
    dept_data.to_excel(output_file, index=False)
   
    print(f’已保存:{output_file},共 {len(dept_data)} 行’)
“`

完整代码(复制就能用)

“`python
import pandas as pd
import os

# === 配置部分(你只需要改这里)===
file_path = r’D:\销售数据\全年销售总表.xlsx’   # 要拆分的Excel文件
split_column = ‘销售部门’                     # 按哪一列拆分
output_dir = r’D:\销售数据\拆分结果’            # 输出文件夹
# ================================

# 读取数据
df = pd.read_excel(file_path)

# 获取所有唯一值
unique_values = df[split_column].unique()

# 创建输出文件夹
os.makedirs(output_dir, exist_ok=True)

# 循环拆分
for value in unique_values:
    subset = df[df[split_column] == value]
    output_file = os.path.join(output_dir, f'{value}.xlsx’)
    subset.to_excel(output_file, index=False)
    print(f’已保存:{output_file},共 {len(subset)} 行’)

print(‘🎉 所有文件拆分完成!’)
“`

运行代码,你会看到控制台打印出每个部门的文件保存路径。打开拆分结果文件夹,所有部门文件整整齐齐躺好了!

四、进阶玩法(让你更强大)

1. 按多列组合拆分(比如按部门和月份)

如果想拆成“销售一部-1月”、“销售一部-2月”这种,可以用两列组合:

“`python
# 新增一列“部门-月份”
df[‘部门月份’] = df[‘销售部门’] + ‘-‘ + df[‘日期’].dt.month.astype(str) + ‘月’
split_column = ‘部门月份’
“`

2. 拆分后保留原Excel格式(列宽、字体等)

pandas保存的Excel默认不带格式,如果想保留原表的列宽,可以结合openpyxl稍作调整,但对小白来说可能复杂。如果对格式要求不高,上面的方法完全够用。

3. 拆分后自动发送邮件给各部门负责人

在循环保存文件后,可以调用Python的smtplib库自动发邮件,附上对应文件。这个我们以后专门讲。

4. 处理超大Excel文件(内存不足怎么办)

如果文件有几百万行,一次性读入内存可能爆掉。可以分块读取+分块拆分,但代码复杂一些。日常办公几千到几万行,上面的方法足够。

五、避坑指南

1. 列名不要有空格或特殊符号,最好统一成中文或英文,避免读取错误。
2. 文件路径用原始字符串(前面加r),例如r’D:\销售数据’,反斜杠就不会被转义。
3. 拆分依据列不能有空值,否则会生成一个nan.xlsx文件。可以先用df = df.dropna(subset=[split_column])删除空行。
4. 保存文件名不能包含非法字符,比如\ / : * ? ” < > |。如果部门名称里带有这些,需要替换掉。

六、写在最后

今天我们用十几行Python代码,实现了Excel文件的自动化拆分,告别手动筛选复制。以后再遇到类似任务,打开这个脚本,改个路径,喝杯咖啡的功夫就完成了。

你是不是也遇到过Excel拆分的烦恼? 欢迎在评论区留言,把你的场景告诉我,也许下一篇文章就是为你量身定制的!

如果你觉得这篇文章对你有帮助,请点赞、在看、分享一键三连,让更多朋友告别繁琐的手工操作。下一期,我们来聊聊 “如何用Python自动发送邮件,并附上附件”,让你的办公自动化更进一步!

我是你们的Python办公助手,我们下期见!

互动话题:除了拆分Excel,你还想用Python自动处理什么办公任务?评论区告诉我,呼声高的优先安排!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Excel太多,手动拆分累成狗?Pyson让你一杯咖啡的功夫全自动搞定!

猜你喜欢

  • 暂无文章

评论 抢沙发

6 + 8 =