面向 Excel/CSV 的本地数据研判工作台。项目提供多表碰撞、多表合并、智能提取、模糊去重、差异对比、跨表检索和取最新行等常用数据处理工具,所有计算在浏览器本地完成,适合快速完成线索核查、表格比对和结果导出。
| 工具 | 用途 | 导出 |
|---|---|---|
| 多表碰撞 | 多张表按字段碰撞,支持补全基准表或只取交集 | 单 sheet 结果 |
| 多表合并 | 以基准表字段为准,合并多张参与表的所有 sheet | 单 sheet 结果 |
| 智能提取 | 从文本列按模板或自定义正则提取手机号、身份证号、银行卡、邮箱、财付通、支付宝等结构化字段 | 单 sheet 结果 |
| 模糊去重 | 按编辑距离或二元组相似度发现重复行,支持完全一致字段约束 | 推荐结果 / 全量标记 |
| 差异对比 | 对比旧表和新表,识别新增、删除、修改和一致 | 单 sheet 结果 |
| 跨表检索 | 多表、多工作表全字段搜索,支持精确、包含、模糊匹配 | 每个命中工作表一个 sheet |
| 取最新行 | 按基准字段分组,并按时间字段保留最新一条 | 单 sheet 结果 |
- 默认 2 张表(
基准表、参与表 A),可继续追加参与表。 - 模式:
补全基准表(保留基准表全部记录)/只取交集(仅保留所有表都命中的记录)。 - 每张表选择碰撞字段,支持
区分大小写开关。 - 结果列带表名前缀(如
基准表.姓名、参与表 A.姓名),便于区分同名字段。 - 导出时去掉表名前缀,按二维数组写入,避免同名字段被对象 key 覆盖。
- 结果按整行去重。
- 1 张
基准表+ 多张参与表,参与表支持单个导入或批量添加。 - 字段映射先按字段名自动匹配,未匹配字段可手动映射到基准字段。
- 合并范围覆盖参与表的所有 sheet。
- 输出列为基准表字段 +
来源表名。 - 支持
整行去重(默认开启),并显示去重移除数量。
- 单表导入,支持多选源列,各列独立匹配,不拼接。
- 模板多选:手机号、身份证号、银行卡号、邮箱、财付通、支付宝、自定义正则。
- 校验规则:
- 身份证号校验日期合法性和校验位。
- 银行卡号排除合法身份证和支付宝号,并做 Luhn 校验。
- 财付通邮箱不被邮箱模板重复命中。
- 同一行同一模板命中多个值时,输出字段自动扩展为
手机号1、手机号2等。 - 自定义正则支持命名分组,输出列取第一个分组名。
- 单表导入,选择
匹配字段,可额外选择完全一致字段。 完全一致字段内容必须完全相同,才允许归到同一重复组。- 相似度算法:
编辑距离/二元组。 - 分块粒度:
首字分块/首2字分块。 - 相似度阈值 50%–95% 可调。
- 支持
区分大小写开关。 - 双导出:
导出推荐:只保留推荐保留行和独立行。导出全量(含标记):保留全部行及重复组标记。
- 固定
旧表和新表。 - 模式:
按内容比对:先匹配完全一致行,再将剩余高度相似行配为修改。按字段对齐:选择旧表/新表各 1 个或多个对齐字段;重复 key 按出现顺序配对。
- 支持
区分大小写开关。 - 修改行的
变更字段格式:字段名: 旧值 → 新值,多个字段用;分隔。 - 修改行展示新表数据,删除行展示旧表数据,新增行展示新表数据。
- 多表导入,每张表可多选工作表(默认全选)。
- 检索方式:
精确/包含/模糊。 - 支持
区分大小写开关。 - 检索范围为选中工作表的全字段,无需用户选择字段。
- 结果按命中的 sheet 分块展示,每块保持该 sheet 原始列结构,只展示命中行。
- 仅高亮命中的要素本身,不整行高亮。
- 导出为
.xlsx,每个命中 sheet 一个 sheet;同名 sheet 自动加后缀避免冲突。
- 单表导入,选择
基准字段和时间字段。 - 每个基准字段只保留时间最新的一条记录。
- 空基准字段忽略,并在结果指标中展示忽略数量。
- 时间解析兼容
Date.parse和 Excel 序列日期数字。
- 支持
.xlsx、.csv。 - 所有计算在浏览器本地完成,不依赖后端服务,数据不会上传。
- 统一导出
.xlsx,适合继续用 Excel 研判。 - 多表工具支持横向表卡片布局和追加表。
- 多个模块支持
区分大小写开关。 - 使用二维数组导出,避免同名字段在 Excel 导出时被对象 key 覆盖。
- 支持 Docker 离线部署包,目标服务器无需 npm、无需联网。
npm install
npm run dev打开:
http://localhost:3000
生产构建:
npm run build类型检查:
npx tsc --noEmit打包离线部署包:
sh deploy.sh pack在目标服务器启动:
sh deploy.sh start停止:
sh deploy.sh stop默认端口为宿主机 3000 到容器 3000。可以通过环境变量覆盖:
DATA_ANALYSIS_WORKBENCH_PORT=8080 sh deploy.sh startapp/
page.tsx 页面壳、导航、模块挂载
config/tools.ts 工具注册
types.ts 共享类型
lib/ 各工具业务计算和 workbook 工具
components/ 通用 UI 组件
modules/ 各工具模块 UI
public/
icon.svg 应用图标和 favicon
Dockerfile
docker-compose.yml
deploy.sh
- 新增工具时,在
app/config/tools.ts注册,在app/lib/<module>.ts放业务计算,在app/modules/<module>放模块 UI。 app/page.tsx只做状态接入和模块挂载,不放复杂算法和大块 UI。- UI 保持工具型、低噪音、信息密度适中。
- 改功能后优先运行
npx tsc --noEmit。 - 更多维护约定见 AGENTS.md。
- Next.js App Router
- TypeScript
- Tailwind CSS
- exceljs
- lucide-react
This project is licensed under the GNU Affero General Public License v3.0. See LICENSE for details.