# DataFormatTool **Repository Path**: chenxiaota/data-format-tool ## Basic Information - **Project Name**: DataFormatTool - **Description**: DataFormatTool 是一款基于 Electron 的桌面数据格式化工具,支持从 Excel 直接复制粘贴数据进行批量处理。包含三个功能模块:日期替换、K里程转换、双列拼接。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataFormatTool 功能说明文档 ## 概述 DataFormatTool 是一款基于 Electron 的桌面数据格式化工具,支持从 Excel 直接复制粘贴数据进行批量处理,也支持上传 Excel 文件进行行数统计。包含五个功能模块:日期替换、数据格式化、K里程转换、多列拼接、统计行数。 左侧菜单按「新长公司」分组,可随时切换各模块。 ## 通用操作 - **输入方式**:从 Excel 选中一列或多列数据,Ctrl+C 复制后粘贴到输入框 - **数据格式**:支持换行符或制表符分隔的多行文本,空行会被保留 - **清空**:点击「清空」按钮重置当前模块所有输入输出 - **复制结果**:处理完成后点击「复制结果」将输出内容复制到剪贴板 --- ## 1. 日期替换 ### 功能说明 将各种年份/月份/日期表示格式统一转换为 `YYYY-MM-DD` 格式。 ### 替换规则 | 输入格式 | 输出结果 | 说明 | |---------|---------|------| | `2026` | `2026-01-01` | 仅年份,月份默认为 1 月 | | `2026年` | `2026-01-01` | 中文年份格式 | | `2026.1` | `2026-01-01` | 点号分隔年月 | | `2026.6` | `2026-06-01` | 月份不补零亦可识别 | | `2026-6` | `2026-06-01` | 短横线分隔年月 | | `2026.12` | `2026-12-01` | | | `2026.1.15` | `2026-01-15` | 完整年月日 | | 空行 | 保留空行 | | | 不匹配格式 | 保留原值 | | ### 操作步骤 1. 在左侧「输入数据」区域粘贴 Excel 数据 2. 点击「执行替换」 3. 在右侧「输出结果」查看替换后的数据 4. 点击「复制结果」复制到剪贴板 ### 统计信息 显示总行数、非空行数、空行数。 --- ## 2. 数据格式化 ### 功能说明 提取每行开头的数字,保留小数点;遇到其他符号或字符即停止。适用于从混合文本中提取纯数值。 ### 格式化规则 | 输入格式 | 输出结果 | 说明 | |---------|---------|------| | `123.45abc` | `123.45` | 提取行首数字及小数部分 | | `99.9 km` | `99.9` | 遇到空格等非数字字符停止 | | `abc123` | `abc123` | 行首非数字,保留原值 | | 空行 | 保留空行 | | ### 操作步骤 1. 在左侧「输入数据」区域粘贴 Excel 数据 2. 点击「执行格式化」 3. 在右侧「输出结果」查看格式化后的数据 4. 点击「复制结果」复制到剪贴板 ### 统计信息 显示总行数、非空行数、空行数。 --- ## 3. K里程转换 ### 功能说明 将铁路里程桩号格式(K桩号)转换为数字格式。 ### 转换规则 | 输入格式 | 输出结果 | 说明 | |---------|---------|------| | `K509+889` | `509.889` | K+数字格式 | | `K4321+223-K5555+212` | `4321.223` | 范围格式,只保留前半部分 | | `K800` | `800` | 纯K+数字 | | `k1200+500` | `1200.500` | 大小写K均兼容 | | `k4321+223-k5555+212` | `4321.223` | 小写范围格式 | | 空行 | 保留空行 | | | 不匹配格式 | 原值 + `⚠️` | 保留原值并标注警告 | ### 操作步骤 1. 在左侧「输入数据」区域粘贴 Excel 数据 2. 点击「执行转换」 3. 在右侧「输出结果」查看转换后的数据 4. 点击「复制结果」复制到剪贴板 ### 统计信息 显示总行数、成功转换行数、空行数、未匹配行数。 --- ## 4. 多列拼接 ### 功能说明 将多列数据按行对应拼接合并,默认至少两列,可通过「添加列」「减少列」调整列数。行数不一致时以最多列的行数为准。 ### 拼接规则 **两列时:** | 第一列 | 第二列 | 输出结果(以逗号为例) | |-------|-------|---------| | 有值 | 有值 | `第一列值,第二列值` | | 空 | 有值 | `第二列值` | | 有值 | 空 | `第一列值` | | 空 | 空 | 空行 | **三列及以上时:** 按列顺序依次拼接,相邻列之间使用对应分隔符连接(空单元格仍占位,分隔符保留)。 ### 分隔符设置 每两列之间可单独设置分隔符,也支持批量统一设置: | 选项 | 符号 | |-----|------| | 逗号 | `,` | | 分号 | `;` | | 制表符 | Tab | | 空格 | ` ` | | 竖线 | `\|` | | 连字符 | `-` | | 下划线 | `_` | | 自定义 | 手动输入任意符号(支持多字符,如 ` - `) | - 列与列之间的分隔符控件显示为「第 N-(N+1) 列」 - 工具栏「批量分隔符」可一次性选择符号,点击「应用到全部」统一各列间分隔符 - 选择「自定义」后,在输入框填写符号;若未填写则回退为逗号 ### 操作步骤 1. 在各列输入框分别粘贴 Excel 数据(默认两列,可按需添加) 2. 为各列间设置分隔符,或使用批量分隔符统一设置 3. 点击「执行拼接」 4. 在右侧「输出结果」查看拼接后的数据 5. 点击「复制结果」或「复制结果(去空行)」复制到剪贴板 ### 统计信息 - 输入阶段:显示各列行数 - 处理完成后:显示总行数(以最大列为准)、非空行数、空行数 ### 性能优化 - 支持 3000 行以上数据流畅处理 - 输出区域使用虚拟滚动渲染,避免大数据卡顿 - 拼接操作在 Web Worker 中异步执行,不阻塞界面 - 输入框使用防抖处理,减少频繁重渲染 - 大数据处理时显示进度条 ### 警告提示 - 各列行数差异超过 100 行时,提示「各列数据行数差异较大,请确认是否对应」 - 处理完成后显示「处理完成」状态 --- ## 5. 统计行数 ### 功能说明 上传一个或多个 Excel 文件(`.xlsx`、`.xls`),按配置排除指定行(如表头)后,统计每个文件的有效数据行数,并汇总全部文件结果。 ### 上传方式 - 拖拽 Excel 文件到上传区域 - 点击「选择文件」可多选上传 - 支持同时上传 50 个以上文件 - 已上传列表显示文件名、文件大小,可单独删除或一键清空 ### 不计算行数配置 每个文件可单独设置不参与统计的行号,也支持「应用到全部」统一设置。 | 配置示例 | 含义 | |---------|------| | `1` | 第 1 行不计算(常用于表头) | | `1,3,5-10` | 第 1、3 行及第 5~10 行不计算 | - 多个行号或范围用英文逗号分隔 - 超出文件实际行数的配置会自动忽略 - 配置格式错误时提示:`格式错误,请输入数字或范围(如 1,3,5-10)` ### 统计规则 | 统计项 | 说明 | |-------|------| | 原始总行数 | Excel 第一个工作表的实际数据行数(按已使用区域计算) | | 不计算行数 | 根据配置统计、且不超过原始总行数的行数 | | 有效行数 | 原始总行数 − 不计算行数 | ### 操作步骤 1. 在左侧菜单选择「新长公司 → 统计行数」 2. 上传一个或多个 Excel 文件 3. 在配置区为各文件设置不计算行数(表头通常为 `1`) 4. 点击「开始统计」 5. 在结果区查看各文件统计及汇总行 6. 点击「复制统计结果」,以制表符分隔文本复制,可直接粘贴到 Excel ### 示例 上传 3 个文件,均设置不计算行数为 `1`: | 文件名 | 原始总行数 | 不计算行数 | 有效行数 | |-------|-----------|-----------|---------| | 文件A.xlsx | 1000 | 1 | 999 | | 文件B.xlsx | 500 | 1 | 499 | | 文件C.xlsx | 2000 | 1 | 1999 | | **汇总(3 个文件)** | **3500** | **3** | **3497** | ### 性能与错误处理 - 使用 Web Worker 异步读取 Excel,避免阻塞主线程 - 支持单文件 10 万行以上数据;文件 ≥ 10MB 时显示处理进度提示 - 非 Excel 文件上传时提示:`仅支持 .xlsx 和 .xls 格式` - 文件损坏或无法读取时,该文件标记为「读取失败」,不影响其他文件统计 - 点击「清空全部」可重置上传、配置与统计结果 --- ## 技术栈 - Electron 33 - React 18 - Vite 5 - Tailwind CSS 3 - TypeScript - SheetJS (xlsx) — Excel 文件读取 ## 启动方式 ```bash cd data-format-tool npm install npm run dev ``` 其他命令: | 命令 | 作用 | |------|------| | `npm run dev` | 开发模式(热更新) | | `npm run build` | 构建打包产物 | | `npm run preview` | 预览构建结果 | --- ## npm 本地镜像配置 国内网络环境下,访问 npm 官方源及 Electron 二进制下载可能较慢。本项目已在根目录提供 `.npmrc`,执行 `npm install` 时会自动使用国内镜像。 ### 方式一:使用项目自带配置(推荐) 项目根目录的 `.npmrc` 内容如下,无需额外操作: ```ini registry=https://registry.npmmirror.com electron_mirror=https://npmmirror.com/mirrors/electron/ electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/ ``` | 配置项 | 作用 | |-------|------| | `registry` | npm 包下载源 | | `electron_mirror` | Electron 运行时二进制下载镜像 | | `electron_builder_binaries_mirror` | electron-builder 相关二进制下载镜像 | 在 `data-format-tool` 目录下直接执行 `npm install` 即可生效。 ### 方式二:全局配置 若希望本机所有项目都使用国内镜像,可执行: ```bash npm config set registry https://registry.npmmirror.com npm config set electron_mirror https://npmmirror.com/mirrors/electron/ npm config set electron_builder_binaries_mirror https://npmmirror.com/mirrors/electron-builder-binaries/ ``` 配置写入用户目录下的 `.npmrc`(Windows 通常为 `C:\Users\<用户名>\.npmrc`)。 ### 方式三:临时指定(单次安装) 仅某次安装时使用镜像,可在命令前加参数: ```bash npm install --registry=https://registry.npmmirror.com ``` Electron 镜像无法通过命令行临时指定,仍需依赖 `.npmrc` 或全局配置。 ### 验证与恢复 查看当前 registry: ```bash npm config get registry ``` 恢复为 npm 官方源: ```bash npm config set registry https://registry.npmjs.org ``` ### 说明 - 镜像地址以 [npmmirror](https://npmmirror.com/) 为例,若单位内网有私有 npm 站点,将上述地址替换为内网地址即可。 - 首次安装依赖时,Electron 体积较大,使用镜像可显著缩短下载时间。 - 若 `npm install` 仍失败,可尝试删除 `node_modules` 与 `package-lock.json` 后重新安装。