Skip to content

wang1st/xlsmerger

Repository files navigation

XLSMerger

高性能 Excel 报表合并工具

License: MIT Rust Platform

智能合并 • 超大规模 • 跨平台

✨ 特性

  • 🚀 高性能 - 使用 Rust 开发,支持 100 万+ 行、1 万+ 个 sheet 的超大规模数据处理
  • 🧠 智能识别 - 自动区分数值型数据(可合并)和文字型编码(不合并)
  • 🌐 多平台 - 支持浏览器(WebAssembly)、桌面应用(Windows/macOS/Linux)
  • 📊 流式处理 - 内存占用稳定,不随文件大小线性增长
  • 🎯 灵活配置 - 支持自定义数据类型规则和合并策略
  • 📈 实时进度 - 提供详细的处理进度和状态反馈
  • 质量保证 - 完整的单元测试覆盖(72%+),包含性能基准测试

🎯 适用场景

XLSMerger 特别适合以下场景:

  • 🏢 企业报表汇总 - 合并下属部门/子公司的财务报表、销售报表等
  • 🏛️ 政府统计 - 汇总各地区、各部门的统计数据
  • 📊 财务分析 - 合并多期间的财务数据,进行趋势分析
  • 🔬 科研数据 - 整合多个实验数据集
  • 📦 多仓库管理 - 合并不同仓库的库存数据

🚀 快速开始

Web 应用(无需安装)

直接在浏览器中使用:

  1. 访问 在线演示 (即将推出)
  2. 或在本地启动 Web 应用:
    cd web
    python -m http.server 8080
    # 访问 http://localhost:8080

桌面应用

前置要求

  • Rust 1.70 或更高版本
  • Node.js 16 或更高版本(用于桌面应用构建)
  • 系统依赖:
    • Windows: 无需额外依赖
    • macOS: 无需额外依赖
    • Linux: 参考 Tauri 文档

构建和运行

# 克隆仓库
git clone https://github.com/yourusername/xlsmerger.git
cd xlsmerger

# 构建 WASM 模块
wasm-pack build --target web --out-dir pkg

# 构建桌面应用
cd src-tauri
cargo build

# 运行桌面应用
cargo run

详细构建说明请参考:

📖 文档

💡 核心概念

智能数据类型识别

XLSMerger 会自动识别单元格的数据类型:

  • 数值型(可合并): 整数、浮点数、百分比、货币等 → 求和合并
  • 文字型(不合并): 编码、ID、名称等 → 保留第一个值或标记冲突

合并策略

  • 数值数据: 相同位置的单元格自动求和
  • 文字数据:
    • 保留第一个非空值
    • 或标记冲突(可配置)
  • 多 sheet 合并: 按 sheet 名称匹配

🎨 界面预览

Web 应用

Web 应用界面

桌面应用

桌面应用界面

🛠️ 技术栈

  • 核心: Rust + calamine(Excel 解析) + rust_xlsxwriter(Excel 写入)
  • Web: WebAssembly + wasm-bindgen
  • 桌面: Tauri 2.0 + 现代化 Web 前端
  • 测试: Rust 内置测试框架 + tempfile

📊 性能基准

基于标准硬件的测试数据(Intel i5, 16GB RAM):

数据规模 行数 Sheet 数 处理时间 内存占用
小型 1,000 10 < 1s ~50MB
中型 100,000 100 ~5s ~200MB
大型 1,000,000 1,000 ~30s ~500MB
超大型 1,000,000+ 10,000+ ~5min ~1GB

详细性能测试结果请参考 src/benchmark.rs

🧪 测试

# 运行所有测试
cargo test

# 运行测试并显示输出
cargo test -- --nocapture

# 运行测试并生成覆盖率报告
cargo install cargo-tarpaulin
cargo tarpaulin --out Html

🤝 贡献

欢迎贡献!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'feat: 添加某个功能')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📝 开源协议

本项目采用 MIT 开源协议。

📧 联系方式

🙏 致谢


Built with ❤️ by the XLSMerger team

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors