# excel-report-merge **Repository Path**: scriptshop/excel-report-merge ## Basic Information - **Project Name**: excel-report-merge - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-18 - **Last Updated**: 2026-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel 报表合并工具(excel-report-merge) 把目录下多个 Excel 报表一键合并为一个文件:自动以第一个非空文件的表头为基准,按表头名对齐,输出「合并明细 + 汇总统计」两个工作表。 ## 功能特性 - 批量读取目录下所有 `.xlsx` / `.xlsm`(自动跳过 Excel 临时锁文件 `~$`) - 列顺序不一致时按表头名自动对齐,缺失字段留空 - 可选添加「来源文件」列(`--no-source` 关闭),数据可溯源 - 可选按整行去重(`--dedupe`) - 输出自动带「汇总统计」工作表:源文件数、总行数、各文件行数 - 表头加粗 + 底纹,列宽自适应,中文不乱码 ## 技术栈 Python 3.10+ · openpyxl ## 安装 ```bash pip install -r requirements.txt ``` ## 使用方法 ```bash # 合并 data 目录下所有 Excel,输出到 output/合并报表.xlsx python main.py --input ./data --output ./output/合并报表.xlsx # 指定工作表 + 去重 python main.py --input ./data --sheet 销售明细 --dedupe ``` ### 参数说明 | 参数 | 说明 | 默认值 | |---|---|---| | `--input` | 存放待合并 Excel 的目录 | `data` | | `--output` | 输出文件路径 | `output/合并报表.xlsx` | | `--sheet` | 指定工作表名(缺省取各文件第一个工作表) | 无 | | `--dedupe` | 按整行内容去重 | 关闭 | | `--no-source` | 不添加「来源文件」列 | 关闭 | ## 示例(真实运行结果) ```bash # 1. 生成 3 个门店样例数据 python tools/make_sample_data.py # 2. 合并 python main.py --input ./data --output ./output/合并报表.xlsx --dedupe ``` 输出 `output/合并报表.xlsx` 的「合并明细」(前 3 行): | 门店 | 日期 | 商品 | 销量 | 金额(元) | 来源文件 | |---|---|---|---|---|---| | 门店A | 2026-09-01 | 笔记本 | 12 | 11880 | 门店A_2026-09.xlsx | | 门店A | 2026-09-02 | 签字笔 | 45 | 540 | 门店A_2026-09.xlsx | | 门店B | 2026-09-01 | 笔记本 | 8 | 7920 | 门店B_2026-09.xlsx | 「汇总统计」工作表: | 统计项 | 数值 | |---|---| | 源文件数 | 3 | | 合并总行数 | 9 | | 明细字段数 | 6 | ## 运行截图 【放 1~2 张:终端运行截图 + 合并结果 Excel 截图】 ## 项目结构 ``` excel-report-merge/ ├── main.py 命令行入口 ├── merger.py 合并核心逻辑 ├── tools/ │ └── make_sample_data.py 样例数据生成器 ├── data/ (样例输入,运行生成) ├── output/ (合并结果,运行生成) └── requirements.txt ``` ## 注意事项 - 脚本只读取、不修改原文件,合并结果单独输出到 `output/` - 各文件列名需一致(顺序可以不同),脚本按表头名对齐 - 建议先在小样本上验证再处理正式数据 ## License MIT