• 首页
  • 使用指南
    上传指南安装指南
  • API文档
    开发指南API调用API参考
  • 相关网站
    嘉立创EDA嘉立创社区开源广场
  • 编辑器
    在线编辑器(专业版)桌面客户端
  • 扩展管理
  • 登录注册
嘉立创产业服务站群

电子产业

logo

嘉立创PCB

PCB、FPC制造服务

logo

嘉立创SMT

一站式PCBA服务平台

logo

嘉立创激光钢网治具

激光钢网&治具制造

logo

嘉立创EDA

国产PCB设计工具

机械产业

logo

嘉立创FA

机械/电气零部件一站式商城

logo

嘉立创3D打印

树脂、尼龙、金属3D打印服务

logo

嘉立创CNC机械智造

机加件一件起订,3天交货

更多服务

嘉立创CAM

国产线路板CAM软件

Forface 3D

SaaS化3D技术服务平台

硬创社

好玩的硬件交流社区

供应商合作

一站式阳光采购平台

· EDA扩展广场
首页

使用指南

上传指南安装指南

API文档

开发指南API调用API参考

相关网站

嘉立创EDA嘉立创社区开源广场

编辑器

在线编辑器(专业版)桌面客户端
登录注册

BOM 对比工具

OSHWHub58v1.2.4
(3)Apache-2.0
对比两个 BOM 文件的差异,支持 CSV/TXT/XLS/XLSX 格式
详情
更改日志
历史版本
评论

BOM 对比工具

OSHWHub58
(3)Apache-2.0
详情
更改日志
历史版本
评论

BOM Compare - BOM 对比工具

中文 | English

嘉立创 EDA Pro 扩展,用于对比两个 BOM(物料清单)文件的差异,以表格形式直观展示变更内容。

功能特性

核心功能

  • 多格式支持:CSV、TXT、XLS、XLSX 格式导入
  • 智能解析:自动识别文件编码(UTF-8、GBK、GB2312)、表头行、分隔符
  • 列名映射:自动匹配常见中英文列名变体,支持手动配置映射关系
  • 差异对比:以位号(Designator)为基准,逐列对比并高亮差异
  • 差异导航:快速跳转上/下一处差异,支持按类型筛选(新增/缺失/变更/相同)
  • 同步滚动:左右面板联动滚动,方便逐行对照
  • 导出报告:支持导出对比结果为 CSV/XLSX 格式

交互体验

  • 拖拽导入:直接拖拽文件到面板即可加载
  • 虚拟滚动:支持上万行 BOM 数据流畅渲染
  • 国际化:支持中文/英文界面切换
  • 快捷键:Ctrl+D 执行对比、F3/Shift+F3 跳转差异、Ctrl+F 搜索
  • 列宽调整:支持拖拽调整列宽,双击列边框自适应内容宽度
  • 搜索定位:支持按位号或关键字搜索,快速定位到目标行
  • 单元格复制:点击单元格可快速复制内容
  • 行联动高亮:鼠标悬停某行时,对侧面板自动高亮对应位号的行

高级功能

  • 重复列检测:自动检测并警告重复的位号,避免匹配错误
  • 列设置:自定义选择参与对比的列
  • 表头差异对比:专门对比两个文件的表头差异
  • 详情弹窗:横向对比布局展示元器件详细变更信息
  • 实时编辑:编辑数据后实时更新对比结果
  • 最近文件记录:记录最近打开的文件路径,方便快速重新加载

界面布局

左右双面板布局,左侧为旧文件,右侧为新文件:

  • 顶部:文件操作栏(导入、清空、导出)
  • 中间:BOM 数据表格(支持列宽调整、排序、搜索)
  • 底部:结果汇总栏(统计相同/差异/新增/缺失行数)

主界面截图

<!-- 截图占位符:主界面空状态 -->

主界面 - 空状态

差异高亮

颜色含义
蓝色/青色单元格值在新旧文件中不同
橙色/黄色整行新文件中多出的元器件
红色/粉色整行旧文件中存在但新文件中缺失
无高亮完全一致

差异展示截图

差异高亮示例

详情弹窗

开发

环境要求

  • Node.js >= 20.17.0

安装依赖

npm install

常用命令

npm run compile    # 编译项目
npm run build      # 编译 + 打包扩展
npm run lint       # 代码检查
npm run fix        # 自动修复代码风格
npm run test       # 运行测试(watch 模式)
npm run test:run   # 运行测试(单次)

项目结构

├── src/                    # 扩展入口
│   └── index.ts            # 注册菜单,打开 iframe 窗口
├── iframe/                 # 主界面(iframe 内嵌页面)
│   ├── index.html          # 页面入口
│   ├── styles/             # 样式(CSS 变量、主题、布局、表格)
│   │   ├── variables.css
│   │   ├── theme.css
│   │   ├── layout.css
│   │   └── table.css
│   └── src/
│       ├── main.ts         # 初始化入口
│       ├── types.ts        # 类型定义
│       ├── locales/        # 国际化资源
│       │   ├── zh-Hans.ts
│       │   └── en.ts
│       ├── core/           # 核心逻辑
│       │   ├── parser/     # 文件解析(CSV、Excel)
│       │   ├── comparator.ts   # 对比算法
│       │   ├── column-mapper.ts # 列映射
│       │   ├── column-config.ts # 列配置
│       │   └── exporter.ts     # 导出
│       ├── ui/             # UI 组件
│       │   ├── table.ts        # 表格组件
│       │   ├── toolbar.ts      # 工具栏
│       │   ├── state.ts        # 状态管理
│       │   ├── summary.ts      # 汇总栏
│       │   ├── dialog.ts        # 对话框
│       │   ├── column-settings-dialog.ts # 列设置对话框
│       │   ├── sheet-selector.ts    # Sheet 选择器
│       │   ├── drop-zone.ts        # 拖拽区域
│       │   ├── editable.ts         # 可编辑单元格
│       │   ├── loading.ts          # 加载状态
│       │   ├── tooltip.ts         # 提示框
│       │   ├── column-resize.ts    # 列宽调整
│       │   └── layout.ts          # 布局
│       └── utils/          # 工具函数
│           ├── i18n.ts      # 国际化
│           ├── encoding.ts  # 编码检测
│           ├── hotkeys.ts   # 快捷键
│           └── storage.ts   # 本地存储
├── tests/                  # 测试用例及样本数据
│   ├── comparator.test.ts
│   ├── csv-parser.test.ts
│   └── data/               # 测试样本数据
├── locales/                # 扩展菜单国际化
│   ├── zh-Hans.json
│   ├── en.json
│   └── extensionJson/      # 扩展注册菜单翻译
│       ├── zh-Hans.json
│       └── en.json
├── docs/                   # 文档
│   ├── prd.md              # 产品需求文档
│   ├── features.md         # 功能需求文档
│   ├── dev-plan.md         # 开发计划
│   └── easyeda-iframe-bug-workaround.md
├── config/                 # esbuild 构建配置
│   ├── esbuild.common.ts
│   └── esbuild.prod.ts
├── build/                  # 打包脚本
│   └── packaged.ts
├── images/                 # 图片资源
│   └── logo.png
├── dist/                   # 编译输出(gitignore)
├── extension.json          # 扩展配置
├── package.json            # 项目依赖和脚本配置
├── tsconfig.json           # TypeScript 编译配置
├── vitest.config.ts        # Vitest 测试配置
└── eslint.config.mjs       # ESLint 代码检查配置

技术栈

  • TypeScript(strict 模式)
  • esbuild(构建)
  • Vitest(测试)
  • xlsx / papaparse / jschardet(文件解析)
  • @jlceda/pro-api-types(EDA 扩展 API)

使用方式

快速开始

  1. 安装扩展后,在嘉立创 EDA Pro 的首页、原理图编辑器或 PCB 编辑器的顶部菜单中点击 BOM Compare 即可打开
  2. 点击左侧面板的「导入」按钮,选择旧版本的 BOM 文件
  3. 点击右侧面板的「导入」按钮,选择新版本的 BOM 文件
  4. 点击「执行BOM比对」按钮,或使用快捷键 Ctrl+D
  5. 查看对比结果,使用差异导航按钮快速定位变更

详细使用步骤

步骤 1:加载文件

  • 方式一:点击「导入」按钮,从文件选择器中选择 BOM 文件
  • 方式二:直接将文件拖拽到对应的面板区域

支持的文件格式:

  • CSV (.csv)
  • TXT (.txt)
  • XLS (.xls)
  • XLSX (.xlsx)

步骤 2:配置列映射(如需要)

如果文件列名无法自动匹配,系统会弹出列映射配置面板:

  • 左侧显示源文件的列名
  • 右侧选择对应的标准列名
  • 可选择「忽略该列」
  • 配置会自动保存,下次加载相同格式文件时自动应用
<!-- 截图占位符:列映射配置 -->

列映射配置

步骤 3:执行对比

  • 点击「执行BOM比对」按钮,或使用快捷键 Ctrl+D
  • 系统会以位号(Designator)为基准进行对比
  • 默认对比所有列,可在列设置中自定义

步骤 4:查看结果

  • 底部汇总栏显示统计信息:相同、差异、新增、缺失的行数
  • 使用「上一处差异」/「下一处差异」按钮快速跳转
  • 使用筛选器按类型查看:全部/仅差异/仅新增/仅缺失/仅相同
  • 点击行末的「详情」按钮查看横向对比详情

步骤 5:导出报告

  • 点击「导出」按钮导出当前 BOM 数据
  • 点击「导出报告」生成包含变更摘要和详细差异的报告

常见问题

Q: 支持哪些文件格式?

A: 支持 CSV、TXT、XLS、XLSX 格式。系统会自动识别文件编码(UTF-8、GBK、GB2312)。

Q: 如何对比两个不同列名的 BOM 文件?

A: 系统会自动匹配常见的中英文列名变体。如果自动匹配失败,您可以手动指定对应关系。

Q: 对比基准是什么?

A: 以位号(Designator)作为对比基准。系统会根据位号匹配左右两侧的行,然后逐列对比其他字段的值。

Q: 如何快速定位差异?

A: 使用「上一处差异」/「下一处差异」按钮,或使用快捷键 F3/Shift+F3。也可以使用筛选器按类型查看。

Q: 导出的报告包含什么内容?

A: 导出报告包含三个 Sheet:变更摘要、差异详情、完整对比。

快捷键

快捷键功能
Ctrl+D执行 BOM 对比
F3下一处差异
Shift+F3上一处差异
Ctrl+F搜索

更新日志

查看 CHANGELOG.md 了解版本更新历史。

v1.2.4

优化

  1. 完成多语言优化

v1.2.3

新增

  1. 为搜索输入框添加清除按钮,方便快速清空搜索内容
  2. 扩展语言自动跟随主程序设置,无需手动切换

修复

  1. 修复语言切换时列宽调整手柄丢失问题
  2. 修复列宽调整与列名映射功能冲突,扩大调整手柄区域
  3. 修复表格滚动时文本在表头连接处可见的问题
  4. 添加 BOM Compare 菜单项的中英文翻译

优化

  1. 优化详情列文本居中对齐,提升视觉体验
  2. 优化导出按钮显示逻辑,统一使用 CSS 类控制
  3. 实现左右表格滚动高度一致性,避免不对称
  4. 优化表头分割线视觉一致性,消除粗细差异
  5. 动态计算操作列宽度,适应中英文双语显示

v1.2.2

新增

  1. 实现全局搜索和筛选功能,支持文本搜索和差异类型筛选
  2. 文件导入后自动触发搜索/筛选功能
  3. 差异导航和筛选按钮动态显示/隐藏,清空/导入文件时自动恢复非对比状态
  4. 筛选模式下也显示高亮效果,提升视觉反馈
  5. 表头详情按钮条件显示,保持列一致性
  6. 使第一列(行号列)支持列宽调整

修复

  1. 实现表头固定功能,预设表头和原始表头在滚动时保持可见
  2. 修复预设表头操作列 sticky 定位失效问题
  3. 修复列宽调整功能并优化用户体验
  4. 修复文本搜索和筛选在对比后的行为不一致问题
  5. 修复搜索/筛选模式切换时行显示问题

优化

  1. 优化搜索高亮样式,使用 outline 替换 border
  2. 优化拖拽区域提示语,删除冗余文字

1.2.1

优化

  1. 将列名匹配从模糊匹配改为精准匹配,减少误识别
  2. 优化界面文字颜色对比度,提升深色背景下的可读性

变更

  1. 为 BOM Compare 菜单项添加省略号,遵循弹窗类型菜单项的 UI 规范
  2. 修复 comparator.ts 中的 TypeScript 类型错误
  3. 扩展版本从 v1.2.0 升级至 v1.2.1

1.2.0

新增

  1. 完善中英文 README 文档,添加详细的功能特性说明
  2. 新增详细的使用步骤指南,包含快速开始和5步详细操作说明
  3. 新增常见问题(FAQ)章节,解答用户常见疑问
  4. 新增快捷键列表,列出所有支持的键盘操作
  5. 为界面截图预留占位符,方便后续添加实际截图
  6. 更新项目结构说明,详细列出所有目录和文件

变更

  1. 扩展版本从 v1.1.0 升级至 v1.2.0
  2. 更新 .edaignore,允许 README 文件被扩展加载
  3. 更新扩展 logo 图片
  4. 删除 docs 文件夹下的开发文档(dev-plan.md、features.md、prd.md、progress.md、easyeda-iframe-bug-workaround.md)

1.1.0

新增

  1. 添加重复列检测和警告系统

修复

  1. 修复diff表格列数不一致导致详情列sticky定位失效的问题

1.0.0

初始版本

暂无数据
暂无数据

评论

在登录或注册后才可以进行评论操作
全部评论(1)
按时间排序|按热度排序

类型

Other

关键词

ToolBOMCompare

扩展信息

版本v1.2.4
发布者

EasyEDA

发布时间2026-06-16 17:04:31
名称

bom-compare

UUID

c78c9305280f48c0ad48d53803e7f1b2

适用EDA版本:^3.0.0
报告

报告滥用

相关链接

主页:https://github.com/easyeda
反馈:https://github.com/easyeda/eext-bom-compare/issues
仓库:https://github.com/easyeda/eext-bom-compare
logo

政策条款

服务条款隐私政策项目授权许可协议作出贡献感谢名单

软件版本

专业版标准版教育版私有化部署版

解决方案

专业版编辑器标准版编辑器桌面客户端API接口文档格式

使用帮助

用户论坛专业版教程标准版教程专业版更新标准版更新

关于我们

团队介绍相关报道关于公司联系我们合作联系
EDA公众号
EDA公众号
开源公众号
开源公众号
开源硬件交流群
开源硬件交流群
版权所有 - 深圳创电优选科技有限公司 粤ICP备2026007863号粤公网安备44030402002736号增值电信业务经营许可证粤B2-20201198ISO/IEC隐私政策用户协议