- 🚀 高性能 - 使用 Rust 开发,支持 100 万+ 行、1 万+ 个 sheet 的超大规模数据处理
- 🧠 智能识别 - 自动区分数值型数据(可合并)和文字型编码(不合并)
- 🌐 多平台 - 支持浏览器(WebAssembly)、桌面应用(Windows/macOS/Linux)
- 📊 流式处理 - 内存占用稳定,不随文件大小线性增长
- 🎯 灵活配置 - 支持自定义数据类型规则和合并策略
- 📈 实时进度 - 提供详细的处理进度和状态反馈
- ✅ 质量保证 - 完整的单元测试覆盖(72%+),包含性能基准测试
XLSMerger 特别适合以下场景:
- 🏢 企业报表汇总 - 合并下属部门/子公司的财务报表、销售报表等
- 🏛️ 政府统计 - 汇总各地区、各部门的统计数据
- 📊 财务分析 - 合并多期间的财务数据,进行趋势分析
- 🔬 科研数据 - 整合多个实验数据集
- 📦 多仓库管理 - 合并不同仓库的库存数据
直接在浏览器中使用:
- 访问 在线演示 (即将推出)
- 或在本地启动 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 名称匹配
- 核心: 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欢迎贡献!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: 添加某个功能') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 开源协议。
- 问题反馈: GitHub Issues
- 邮箱: your-email@example.com
- calamine - Excel 文件解析库
- rust_xlsxwriter - Excel 文件写入库
- Tauri - 跨平台桌面应用框架
- wasm-bindgen - Rust WebAssembly 绑定
Built with ❤️ by the XLSMerger team

