# Excel数据对比工具 **Repository Path**: jxufe2202001178/excel-data-comparison-tool ## Basic Information - **Project Name**: Excel数据对比工具 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-15 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel 数据对比工具 一个基于 Streamlit 的 Excel 数据对比工具,支持多文件对比、手动字段映射、可视化分析等功能。 ## ✨ 功能特性 ### 🔍 核心功能 - **多文件对比**:支持两个文件对比和超级对比(批量上传多个文件) - **多主键配置**:支持复合主键匹配,精确对比数据 - **手动映射**:支持不同列名之间的手动映射,灵活处理异构数据 - **容差对比**:支持数值容差设置,避免浮点精度问题 ### 📝 数据编辑 - **在线编辑**:上传文件后可直接在线编辑数据 - **实时保存**:编辑后的数据可用于对比或导出 - **动态行操作**:支持添加和删除行 ### 📊 可视化分析 - **图表分析**:支持直方图、柱状图、相关性热力图 - **差异高亮**:支持整行高亮和单元格级高亮 - **统计摘要**:展示差异统计信息 ### 📤 导出功能 - **Excel导出**:保留差异颜色标记 - **CSV导出**:纯文本格式 - **HTML导出**:带样式的报告 ## 🚀 快速开始 ### 环境要求 - Python 3.10+ - Streamlit 1.36+ - Pandas 2.0+ 首先要安装python哦~ ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 启动应用 **方式1:双击启动** ``` 双击 start.bat 文件,究极懒人版,但还是要安装python ``` **方式2:命令行启动** ```bash cd d:\python_workspace\datacomparison(切换到你自己的下载目录,括号记得删) python -m streamlit run app.py ``` **方式3:指定端口** ```bash python -m streamlit run app.py --server.port 8501 ``` ## 📁 项目结构 ``` datacomparison/ ├── app.py # Streamlit 主应用入口 ├── config.py # 配置文件 ├── requirements.txt # Python 依赖列表 ├── start.bat # Windows 启动脚本 └── services/ # 核心服务模块 ├── __init__.py # 模块导出 ├── excel_loader.py # Excel/CSV 文件加载服务 ├── comparator.py # 对比引擎 ├── template_manager.py # 模板管理 ├── export_manager.py # 导出服务 └── chart_service.py # 图表服务 ``` ## 📖 使用说明 ### 基本对比流程 1. **上传文件**:在左侧配置区上传两个Excel/CSV文件 2. **选择模板**:选择预设模板或创建自定义模板 3. **预览编辑**:查看数据预览,如需修改可在"在线编辑"标签页编辑 4. **开始对比**:点击"开始对比"按钮 5. **查看结果**:查看对比结果和统计摘要 6. **导出报告**:导出Excel、CSV或HTML报告 ### 手动映射模式 当两个文件的列名不同时,可使用手动映射: 1. 在左侧配置区切换到"手动映射"标签页 2. 勾选"启用手动映射" 3. 选择主键映射(文件1主键 → 文件2主键) 4. 添加对比字段映射 5. 点击"开始对比" ### 超级对比模式 同时对比多个文件: 1. 在左侧配置区切换到"超级对比"标签页 2. 批量上传至少2个文件 3. 点击"开始超级对比" 4. 查看对比摘要和详细结果 ## ⚙️ 模板配置 模板包含以下配置项: - **主键列**:用于匹配数据行的唯一标识(支持多个) - **对比列**:需要进行对比的字段 - **忽略列**:不参与对比的字段 - **容差**:数值对比时的容差值 ### 内置模板 1. **标准凭证模板**:适用于凭证数据对比 2. **销售订单模板**:适用于订单数据对比 3. **通用表格模板**:适用于通用表格对比 ## 📊 图表分析 ### 数据预览阶段 - **数据概览**:行数、列数、数值列数、分类列数 - **数值分布**:直方图展示数值列分布 - **分类分布**:柱状图展示分类列分布 - **相关性分析**:热力图展示数值列相关性 ### 对比结果阶段 - **差异分布**:饼图展示差异类型分布 - **数据对比**:并排展示两个文件的分布直方图 - **趋势分析**:差异趋势堆叠图 ## 🔧 高级功能 ### 容差对比 设置数值容差,例如设置容差为0.01,表示两个数值相差不超过1%视为相同。 ### 单元格高亮 在对比结果中选择"单元格高亮"模式,只标记有差异的单元格。 ### 在线编辑 在文件预览阶段点击"在线编辑"标签页,可直接修改数据,修改后的数据将用于对比。 ## 📝 导出格式 | 格式 | 说明 | |------|------| | Excel (.xlsx) | 保留差异颜色标记 | | CSV (.csv) | 纯文本格式,便于数据处理 | | HTML (.html) | 带样式的网页报告 | ## 🛠️ 开发说明 ### 服务模块 #### ExcelLoader (`services/excel_loader.py`) - `load_excel(file, sheet_name)`:加载Excel文件 - `get_sheet_names(file)`:获取工作表名称 #### Comparator (`services/comparator.py`) - `compare_vouchers(df1, df2, key_columns, compare_columns, tolerance)`:执行对比 - `get_diff_cell_mask(df, tolerance)`:获取差异单元格掩码 #### TemplateManager (`services/template_manager.py`) - `get_template(name)`:获取模板配置 - `save_template(name, config)`:保存模板 - `get_template_names()`:获取所有模板名称 #### ExportManager (`services/export_manager.py`) - `export_to_excel(df, highlight_mode)`:导出Excel - `export_to_csv(df)`:导出CSV - `export_to_html(df)`:导出HTML #### ChartService (`services/chart_service.py`) - `create_numeric_histogram(df, column)`:创建直方图 - `create_column_distribution_chart(df, column)`:创建柱状图 - `create_correlation_heatmap(df)`:创建热力图 ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交Issue和Pull Request! --- **注意**:首次启动可能需要安装依赖,启动脚本会自动安装。如果遇到端口占用问题,请尝试更换端口。