Excel 按列批量拆分成多个工作簿:三种方案实测对比

背景

把一张总表按某一列拆成多个工作簿,是办公场景里非常高频的需求:按部门拆发给负责人、按区域拆做分发、按门店拆做台账。但大多数方案都会在同一个地方翻车——格式没了。

本文把三种常见做法列出来,说清各自的适用边界。

方案一:Power Query(零代码)

路径:数据 → 获取和转换 → 按列筛选 → 导出为新文件。

优点:

缺点:

适用:一次性任务、单行普通表、拆完不需要给人看格式。

方案二:Python 脚本(openpyxl / pandas)

最小示例:

import pandas as pd

df = pd.read_excel("总表.xlsx", header=None)
groups = df.groupby(df.columns[key_col])

for name, sub in groups:
    sub.to_excel(f"out/{name}.xlsx", index=False, header=False)

优点:格式和逻辑完全可控,能接后续流程(自动打 zip、自动发邮件)。

缺点:

适用:有编程基础、需求长期稳定、或需要接自动化流程的场景。

方案三:专用工具

这类工具的核心能力就是「保留格式」和「批量处理」,直接选一张表、指定拆分列即可。

三种方案对比

维度Power QueryPython 脚本专用工具
上手成本低高低
保留格式否需额外处理是
批量处理需重复操作可是
二级拆分否需自己实现是
适合场景一次性、无格式要求长期、需接流程长期、格式有要求

总结

  1. 先看表头结构:单行普通表,Power Query 就够;有多层表头或合并单元格,必须选保留格式的方案
  2. 看频率:偶尔一次用自带功能;每周都做、格式有要求,用能保留格式的工具
  3. 看是否需要二级拆分:需要拆到人(如工资条),Power Query 和多数脚本模板都做不了
  4. 无论哪种方案,操作前先备份原表,先拿小样本跑一遍

文中的专用工具是 ExcelRouter,开源 MIT 协议:

GitHub:https://github.com/MarsandSea/ExcelRouter

国内镜像:https://gitee.com/Marsandsea/Excelrouter

文中提到的工具:ExcelRouter

把一个或一整批 Excel 按部门、区域、工号等字段拆成多个文件,完整保留复杂表头与格式, 可再按人二级拆分并打包 ZIP。Windows + 银河麒麟 / 统信 UOS,免费开源(MIT), 全程本机处理,不联网、不上传。

下载(国内 · Gitee) GitHub 源码 ⭐