# Excel数据差异化对比工具 **Repository Path**: liangyouyi/excel-data-comparison-tool ## Basic Information - **Project Name**: Excel数据差异化对比工具 - **Description**: 数据对比,无非就是差异化对比;当两个文件数据差异化非常大时且毫无规律,对比毫无意义;只有某列数据一样或者差异化很小时才有对比的意义,这样就把差异化小的分为以下3种情况进行对比: 1、 当某列或者多列数值一样时且行数一样,这样就是个别数据不一样,对每一行进行对比,这就是逐行对比法; 2、 当某列值排序及数据基本一致,但行数不同时,通过插入空行对关键件列数据先进行对齐,然后再对比,这就 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel数据对比工具 一个基于 Python PyQt5 的 Excel 文件对比工具,支持 .xls 和 .xlsx 格式,具备合并单元格处理、多种对比模式等功能。 ## 功能特性 - ✅ **支持多种文件格式**:同时支持 .xls(旧版Excel)和 .xlsx(新版Excel)格式 - ✅ **合并单元格处理**:正确显示和处理合并单元格 - ✅ **三种对比模式**: - 逐行对比:直接按行号对比 - 排序对齐:先按关键列排序,再进行智能对齐对比 - 智能插空对齐:使用LCS算法进行智能插空对齐 - ✅ **.xls 转 .xlsx 功能**:无损转换,保留所有样式(合并单元格、字体、格式等) - ✅ **差异高亮显示**: - 红色:源文件独有行 - 蓝色:目标文件独有行 - 黄色:值不同(双方都有但内容不同) ## 技术栈 - Python 3.x - PyQt5(GUI框架) - pandas(数据处理) - openpyxl(读取 .xlsx 文件) - xlrd(读取 .xls 文件) - pywin32(可选,用于 .xls 到 .xlsx 的无损转换) ## 安装依赖 ```bash pip install -r requirements.txt ``` 如果需要无损转换 .xls 文件,还需要安装 pywin32: ```bash pip install pywin32 ``` ## 使用方法 1. **启动程序**: ```bash python main.py ``` 2. **选择文件**: - 点击"浏览"按钮选择源文件和目标文件 - 支持拖拽文件到输入框 3. **转换 .xls 文件(可选)**: - 如果选择的是 .xls 文件,可以点击"转换为xlsx"按钮进行无损转换 - 转换后的文件保存在原文件同目录下 4. **选择工作表**:从下拉框中选择要对比的工作表 5. **设置对比参数**: - 关键列:用于排序和匹配的列(如 A、B、C 等) - 辅助列:额外的排序依据列 - 忽略列:需要忽略的列 6. **选择对比模式**: - 逐行对比:直接按行号对比 - 智能对齐:智能插空行匹配对齐 - 排序对齐:先排序再智能对齐,然后对比 7. **开始对比**:点击"开始对比"按钮 8. **导出结果**:点击"导出结果"按钮将对比结果保存为 Excel 文件 ## 项目结构 ``` Excel对比工具/ ├── main.py # 入口文件 ├── gui.py # GUI界面 ├── data_preprocessor.py # 数据预处理模块 ├── alignment_engine.py # 对齐引擎 ├── detection_module.py # 差异检测模块 ├── requirements.txt # 依赖列表 └── README.md # 项目说明 ``` ## 注意事项 1. 如果需要使用 .xls 到 .xlsx 的无损转换功能,需要安装 Microsoft Excel 2. 建议将 .xls 文件转换为 .xlsx 后再进行对比,以获得更好的兼容性 3. 当关键列包含混合类型(整数和字符串)时,排序会自动转换为字符串比较 ## License MIT License