# 表格合并助手 **Repository Path**: evan-yang0210/table-merge-assistant ## Basic Information - **Project Name**: 表格合并助手 - **Description**: 一个专注于表格数据合并的开源项目,支持多种格式文件的高效整合,旨在简化数据处理流程,提升开发者工作效率。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-27 - **Last Updated**: 2025-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel表格合并工具 这是一个功能强大的Excel表格合并工具,支持多种合并方式,可以帮助您快速合并多个Excel文件。 ## 🚀 功能特点 - ✅ 支持 `.xlsx` 和 `.xls` 格式 - ✅ 三种合并方式:按工作表名称、按文件、合并到单个工作表 - ✅ 智能处理表头和空行 - ✅ 支持批量处理 - ✅ 提供Web界面和命令行两种使用方式 - ✅ 进度显示和错误处理 ## 📦 安装依赖 ### Node.js版本(命令行工具) ```bash # 安装Node.js依赖 npm install # 或者直接安装ExcelJS npm install exceljs ``` ### Web版本(浏览器工具) 直接打开 `excel_merger.html` 文件即可使用,无需安装任何依赖。 ## 🛠️ 使用方法 ### 方法一:Web界面(推荐) 1. 打开 `excel_merger.html` 文件 2. 拖拽或选择要合并的Excel文件 3. 选择合并方式和选项 4. 点击"开始合并"按钮 5. 自动下载合并后的文件 ### 方法二:命令行工具 ```bash # 基本用法 node excel_merger.js <输入目录或文件> <输出文件> [选项] # 示例 node excel_merger.js ./excel_files merged.xlsx node excel_merger.js ./excel_files merged.xlsx --type byFile node excel_merger.js ./excel_files merged.xlsx --type single --skip-empty ``` #### 命令行参数说明 - `<输入目录或文件>`: 要合并的Excel文件所在目录或具体文件路径 - `<输出文件>`: 合并后的输出文件路径 - `--type <合并类型>`: - `bySheet`: 按工作表名称合并(默认) - `byFile`: 按文件合并 - `single`: 合并到单个工作表 - `--headers`: 包含表头(默认启用) - `--skip-empty`: 跳过空行 - `--sheet-name <名称>`: 单个工作表的名称(仅在single模式下有效) ## 📋 合并方式详解 ### 1. 按工作表名称合并(bySheet) 将所有文件中相同名称的工作表合并到一起。 **适用场景:** - 多个文件具有相同的工作表结构 - 需要按数据类型分类合并 **示例:** ``` 文件A: Sheet1, Sheet2 文件B: Sheet1, Sheet3 文件C: Sheet2, Sheet3 合并结果: - Sheet1: 包含文件A和文件B的Sheet1数据 - Sheet2: 包含文件A和文件C的Sheet2数据 - Sheet3: 包含文件B和文件C的Sheet3数据 ``` ### 2. 按文件合并(byFile) 每个文件作为一个工作表,文件内的多个工作表会合并到一起。 **适用场景:** - 需要保持文件的独立性 - 每个文件代表不同的数据源 **示例:** ``` 文件A.xlsx: Sheet1, Sheet2 文件B.xlsx: Sheet1, Sheet3 合并结果: - 文件A: 包含原文件A的所有工作表数据 - 文件B: 包含原文件B的所有工作表数据 ``` ### 3. 合并到单个工作表(single) 将所有文件的所有工作表合并到一个工作表中。 **适用场景:** - 需要统一的数据视图 - 进行数据分析和统计 **示例:** ``` 所有文件的所有工作表数据都合并到"合并数据"工作表中 每个数据块前会添加标识信息 ``` ## 🔧 代码集成 ### 在您的项目中使用 ```javascript const ExcelMerger = require('./excel_merger'); const merger = new ExcelMerger(); // 合并指定目录下的所有Excel文件 await merger.mergeFiles('./excel_files', './output/merged.xlsx', { mergeType: 'bySheet', includeHeaders: true, skipEmptyRows: true }); // 合并指定的文件列表 await merger.mergeFiles([ './file1.xlsx', './file2.xlsx', './file3.xlsx' ], './output/merged.xlsx', { mergeType: 'byFile' }); ``` ## 📊 基于您项目的实际应用 根据您项目中的代码,我发现您已经在使用类似的Excel合并功能。以下是一些改进建议: ### 1. 代发表格合并(参考您的qbh_baojia_admin项目) ```javascript // 您可以使用我们的工具来简化现有的合并逻辑 const merger = new ExcelMerger(); // 替代您现有的mergeExcel方法 async function mergeDropshippingTables(files) { const filesData = []; for (const file of files) { const fileData = await merger.readExcelFile(file.path); filesData.push(fileData); } // 按分类合并(类似您现有的逻辑) const workbook = merger.mergeBySheetName(filesData, { includeHeaders: true, skipEmptyRows: true }); return workbook; } ``` ### 2. 数据处理优化 ```javascript // 结合您现有的数据处理逻辑 function processExcelData(data) { return data.map(item => { // 应用您的业务逻辑 const newItem = {}; header.forEach(attr => { newItem[attr] = item[attr] || ''; }); // 添加时间格式化 newItem['创建时间'] = parseTime(newItem['创建时间']); return newItem; }); } ``` ## ⚠️ 注意事项 1. **文件大小限制**: 大文件可能需要较长处理时间 2. **内存使用**: 同时处理多个大文件时注意内存使用 3. **文件格式**: 确保输入文件是有效的Excel格式 4. **工作表名称**: 工作表名称不能包含特殊字符 5. **数据类型**: 复杂的单元格格式可能需要特殊处理 ## 🐛 常见问题 ### Q: 合并后的文件打不开? A: 检查输入文件是否损坏,确保有足够的磁盘空间 ### Q: 表头重复出现? A: 使用"包含表头"选项,工具会自动处理表头重复问题 ### Q: 某些数据丢失? A: 检查是否启用了"跳过空行"选项,可能过滤了包含空值的行 ### Q: 处理速度慢? A: 大文件处理需要时间,建议分批处理或使用更高配置的机器 ## 📝 更新日志 ### v1.0.0 - 初始版本发布 - 支持三种合并方式 - 提供Web和命令行两种界面 - 完整的错误处理和进度显示 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个工具! ## 📄 许可证 MIT License - 详见 LICENSE 文件 --- **如果这个工具对您有帮助,请给个⭐️支持一下!**