立项背景和目标:在日常办公中,经常需要将多个部门发来的Excel报表(格式相似但不完全一致)合并成一个总表,再进行汇总分析。手动复制粘贴不仅耗时,而且容易出错。本项目的目标是开发一个简单的Python脚本,能够自动读取指定文件夹下所有Excel文件,提取关键列,合并去重,并输出一个干净的汇总表。
软件功能、核心功能模块:脚本包含三个核心模块:1)文件遍历模块,自动扫描文件夹内所有.xlsx文件;2)数据提取模块,根据用户配置的列名映射,从每个文件中抓取所需数据;3)合并清洗模块,去除重复行、填补缺失值、统一日期格式,最后生成一个新的Excel文件。
业务流程、功能路径描述:用户将需要合并的Excel文件放入同一文件夹 → 双击运行脚本 → 命令行提示输入需要保留的列名(如“姓名、销售额、日期”)→ 脚本自动处理 → 输出“merged_result.xlsx”到同一文件夹。全程无需打开Excel,30秒内完成原本需要1小时的手工劳动。
整体架构和设计思路
采用轻量级脚本架构,不依赖数据库或Web服务,确保低资源消耗和高可移植性。核心设计原则是“配置与逻辑分离”:在脚本开头定义统一的配置区,用户可修改列名映射、目标字段、文件路径等参数。技术栈选用Python 3.8+,主要依赖pandas(数据处理)、openpyxl(Excel读写)、os(文件遍历)。该方案能在普通办公电脑上流畅运行,无需额外安装复杂环境。
从需求分析、代码编写、单元测试到文档撰写的全部工作。具体包括:设计文件遍历模块(自动递归扫描子文件夹);实现智能列名映射功能(通过同义词字典匹配不同表头);增加异常处理机制(跳过损坏文件并记录日志)。最终交付的脚本在10份结构不一的Excel文件(累计5000+行数据)上测试通过,合并耗时≤2秒,数据完整率100%。相比手动操作,效率提升约50倍。
遇到的难点、坑和解决方案
难点1:不同文件的列名不一致(如“销售额” vs “销售金额”)。
解决方案:设计了一个可配置的“同义词映射表”,用户只需在脚本开头补充一次映射关系,脚本即可自动识别并合并。
难点2:pandas读取部分Excel文件时因格式损坏而抛出异常。
解决方案:对文件读取操作添加try-except捕获,将失败的文件名写入error.log,并继续处理剩余文件,避免整个任务中断。
难点3:合并时内存占用过高。
解决方案:采用分块读取(chunk)和定期释放内存的方式,优化pandas的pd.concat调用顺序,确保在老旧电脑上也能稳定运行。