name: excel-merge
description: Excel多文件智能合并工具;自动对齐表头、过滤空行、适配列数;支持并行读取/分块处理/高效写入/格式保留;当用户需要合并多个Excel、汇总表格数据或整理报表时使用
dependency:
python:
- pandas>=1.3.0
- openpyxl>=3.0.0
Excel 数据合并技能
任务目标
想要更强大的技能插件,就来小葱技能站7w4.net看看吧。
将多个具有相同或相似表头的 Excel 文件智能合并为一个文件,支持数据清洗、来源追踪和格式保留。
前置准备
- 确认已安装依赖:
pip install pandas openpyxl
- 可选安装 xlsxwriter(提升写入性能 2-3x):
pip install xlsxwriter
- 准备待合并的 Excel 文件(.xlsx/.xls)
- 确定输出文件路径
操作步骤
基础合并流程
- 识别用户提供的 Excel 文件列表或目录
- 验证文件存在且可读
- 调用合并脚本执行合并
- 返回合并结果与统计信息
脚本调用说明
python scripts/merge.py --files <file1.xlsx> <file2.xlsx> --output <output.xlsx>
核心参数
| 参数 |
说明 |
默认值 |
--files |
待合并的 Excel 文件路径(至少1个) |
必需 |
--output |
输出文件路径 |
必需 |
--with-source |
添加"来源文件"列标记数据来源 |
False |
--sheet |
指定读取的 Sheet 索引 |
0 |
--no-header |
首行不作为表头 |
False |
性能优化参数
| 参数 |
说明 |
适用场景 |
--no-parallel |
禁用多进程并行读取 |
文件数少或内存受限 |
--workers N |
最大并行进程数 |
调优 CPU 利用率 |
--chunksize N |
分块大小(>0启用分块模式) |
超大文件(>50万行) |
--no-batch |
禁用批量写入 |
小文件快速合并 |
格式保留参数
| 参数 |
说明 |
效果 |
--keep-format |
启用格式保留模式 |
保留所有单元格格式 |
保留的格式类型
- 字体(名称、大小、粗细、颜色、斜体)
- 填充(背景色、渐变填充)
- 边框样式(上下左右边框)
- 数字格式(日期、货币、百分比等)
- 对齐方式(水平、垂直、文本缩进)
- 列宽和行高
模式对比
| 模式 |
性能 |
格式保留 |
适用场景 |
| 默认模式 |
高 |
否 |
纯数据合并 |
| 格式保留模式 |
中 |
完整 |
需要保留样式的报表 |
去重参数
| 参数 |
说明 |
默认值 |
--dedup |
合并后去重 |
False(默认不去重) |
--dedup-cols |
按指定列去重(需配合 --dedup) |
None(按全部列) |
去重说明
- 不指定
--dedup-cols:按所有列的值去重,完全相同的行只保留一条
- 指定
--dedup-cols:按指定列的值去重,保留首次出现的行
使用示例
示例1:基础合并(自动优化)
- 场景:合并目录下所有季度报表
- 命令:
python scripts/merge.py --files q1.xlsx q2.xlsx q3.xlsx --output yearly.xlsx
- 预期产出:合并后的 yearly.xlsx,包含所有数据行
示例2:带来源标记 + 调优并行
- 场景:合并多部门数据,需追踪来源,文件较多
- 命令:
python scripts/merge.py --files dept_*.xlsx --output merged.xlsx --with-source --workers 4
- 预期产出:merged.xlsx,最后一列为"来源文件"列
示例3:超大文件分块模式
- 场景:单个超大 Excel 文件(100万行)
- 命令:
python scripts/merge.py --files big_data.xlsx --output result.xlsx --chunksize 20000
- 预期产出:内存峰值降低 80%,避免 OOM
示例4:保留格式合并
- 场景:合并多个格式化的报表,保持原有样式
- 命令:
python scripts/merge.py --files report_q1.xlsx report_q2.xlsx --output yearly_report.xlsx --keep-format
- 预期产出:合并后保留字体、颜色、边框、列宽等格式
示例5:追加合并
- 场景:已有汇总表,新增数据追加进去
- 命令:
python scripts/merge.py --files existing.xlsx new_data.xlsx --output existing.xlsx
- 预期产出:existing.xlsx 数据行增加(追加模式)
示例6:去重合并
- 场景:合并多文件并去除完全重复的行
- 命令:
python scripts/merge.py --files data1.xlsx data2.xlsx --output merged.xlsx --dedup
- 预期产出:merged.xlsx,无重复行
示例7:按指定列去重
- 场景:按姓名去重,保留首次出现的数据
- 命令:
python scripts/merge.py --files a.xlsx b.xlsx --output unique.xlsx --dedup --dedup-cols 姓名 工号
- 预期产出:按姓名和工号组合去重后的数据
资源索引
注意事项
- 表头以第一个文件的列名为准
- 列数不匹配时自动适配(少列补空, 多列截断)
- 完全空白的行会被自动过滤
- 支持 .xlsx 和 .xls 格式
- Windows 下建议使用
--no-parallel 避免多进程问题
--keep-format 模式下性能略低于默认模式,建议仅在需要保留格式时使用