name: excel-merge
description: Excel多檔案智慧合併工具;自動對齊表頭、過濾空行、適配列數;支援並行讀取/分塊處理/高效寫入/格式保留;當用戶需要合併多個Excel、彙總表格資料或整理報表時使用
dependency:
python:
- pandas>=1.3.0
- openpyxl>=3.0.0
Excel 資料合併技能
任務目標
將多個具有相同或相似表頭的 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:保留格式合併
小蔥技能有更好的技能skills外掛。
- 場景:合併多個格式化的報表,保持原有樣式
- 命令:
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 模式下效能略低於預設模式,建議僅在需要保留格式時使用