当前位置: 首页 > news >正文

使用Spreadsheet Compare工具对比Excel文件差异

文章目录

  • 前言
  • Spreadsheet Compare
  • 命令模式
    • 找到工具
    • 编写脚本
    • 脚本内容
    • 脚本执行
    • 供给SVN调用
  • 总结

前言

Spreadsheet Compare 这个工具的相遇是通过 TortoiseSVN 来牵线的,在使用 SVN 管理 Excel 表格时发现,TortoiseSVN自带的比较工具不能对比Excel文件的版本差异,这对于通过日志查找问题来说非常不方便,通过搜索发现了 Spreadsheet Compare 这款优秀的工具,特此记录一下,方便日后查找并快速配置。

Spreadsheet Compare

Spreadsheet Compare 是 Microsoft Office 自带的一款工具软件(2013版本以后),可以用来比较不同 Excel 表格的差异,既能显示数据的不同,也可以显示出表结构的不同。这是一款带界面的工具软件,布局分为左右两部分,与 Beyond Compare 这个工具界面类似,但是功能更加强大。

Beyond Compare 也可以用来对比表格差异,但是只能比较两个Excel的当前工作表,如果每个 Excel 文件中包含多个工作表时就会对比错误的情况,而 Spreadsheet Compare 在这一点上更加优秀,可以对比多个表格数据。

Spreadsheet Compare 使用起来也非常简单,可以操作的按钮很少,界面简洁, 启动软件后单击左上角的 Compare Files 按钮,选择要对比的文件即可,非常方便,数据差异、结构差异等都会用不同的颜色标记出来,还可以导出对比结果。

命令模式

这种模式对于是提供给 TortoiseSVN 使用的前提,因为 TortoiseSVN 无法像人一样一步步操作选择待比较的 Excel 表格,而是需要一个命令脚本,将要比较的参数传给 Spreadsheet Compare 工具进而完成比较工作。

找到工具

想要编写命令脚本,首先要找到这个比较的工具,我找到的路径是在 "C:\Program Files (x86)\Microsoft Office\Root\Office16\DCF\SPREADSHEETCOMPARE.EXE",相信大家的路径都差不多,在 Office 工具目录下应该就能找到了,可以在开始菜单中找到工具,然后通过属性找到可执行程序所在目录,工具的可执行文件名字叫做 SPREADSHEETCOMPARE.EXE

编写脚本

编写脚本之前有一点需要强调一下,SPREADSHEETCOMPARE.EXE 有点奇怪,大多数软件在比较差异的时候会将两个文件作为参数使用,但是 SPREADSHEETCOMPARE.EXE 在比较之前,需要将两个待比较的文件名分成两行写入一个文件,再将这个文件作为参数传给工具使用,比如要比较 ExcelA.xlsx 和 ExcelB.xlsx 两个文件,需要将两个文件写入一个临时文件 ExcelCompare.txt 中:

ExcelA.xlsx
ExcelB.xlsx

然后再把这个文件作为参数传给工具:

SPREADSHEETCOMPARE.EXE ExcelCompare.txt

脚本内容

有了上面的说明,我们就可以写出一个较为通用的版本,比如我的脚本名字是 SC.bat,内容如下:

@echo off
chcp 65001

set batpath=%~dp0
echo %~1> "%batpath%ExcelCompare.txt"
echo %~2>> "%batpath%ExcelCompare.txt"
"C:\\Program Files (x86)\\Microsoft Office\\Root\\Office16\\DCF\\SPREADSHEETCOMPARE.EXE" "%batpath%ExcelCompare.txt"

脚本执行

直接在 cmd 命令行中输入以下命令就可以对比 ExcelA.xlsx 和 ExcelB.xlsx 两个文件了:

D:\data\bat>
D:\data\bat>SC.bat ExcelA.xlsx ExcelB.xlsx

供给SVN调用

个人比较懒,不喜欢截图,在 TortoiseSVN 工具的设置中找到“差异查看器”选项,选择该选项然后点击界面上的高级设置,点击增加按钮,增加根据扩展名指定差异比较程序,填写 .xlsx 和所需命令 D:\data\bat>SC.bat %base %mine

命令中的 %base%mine 参数是 TortoiseSVN 提供的,代表原始文件和自己修改的文件,这次再通过 SVN 查看表格差异就可以启动 Spreadsheet Compare 程序方便地查看两个表格的差异啦。

总结

  • Spreadsheet Compare 是一款强大的表格比较工具,在表格比较时比 Beyond Compare 还要优秀
  • 脚本调用 SPREADSHEETCOMPARE.EXE 程序时参数是一个包含了待比较文件名的临时文件,这一点和其他的比较工具有些不同
  • 脚本中我们生成的临时文件无需手动处理,在打开待比较文件后会自动删除

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

急需找到一个看得见摸得着的目标为之努力,不然真的有点止步不前了,至今还未找到可以废寝忘食之事,长此以往终将碌碌无为,继续找寻,此事可以不伟大,但应该有趣~

相关文章:

  • linux环境下使用sort命令完成常见排序操作
  • 关于数据一致性的思考
  • linux环境下sed命令的基础用法
  • 学习cmake从成功编译一个小程序开始
  • linux环境下使用netstat命令查看网络信息
  • 简单聊聊01世界中编码和解码这对磨人的小妖儿
  • C/C++中有符号数隐式类型转换成无符号数需注意的问题
  • system_clock::now()和time()时间函数混用带来的踩坑经历
  • 2020年终总结!新的起航,新的征程
  • 在比较Linux和Windows命令差异时意外发现了Windows Terminal
  • 记一次解决Intel 9462无线网卡的笔记本安装Ubuntu16.04后无法连接WIFI问题的艰难历程
  • 启用make多任务参数让构建过程加速完成
  • C++中一些方便的算法函数和吃不够的语法糖
  • C/C++中string和int相互转换的常用方法
  • TCP/IP协议簇中的子网掩码有什么作用
  • 【Leetcode】101. 对称二叉树
  • 【刷算法】求1+2+3+...+n
  • android 一些 utils
  • Codepen 每日精选(2018-3-25)
  • gcc介绍及安装
  • GraphQL学习过程应该是这样的
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JS实现简单的MVC模式开发小游戏
  • PhantomJS 安装
  • python 学习笔记 - Queue Pipes,进程间通讯
  • 百度小程序遇到的问题
  • 闭包,sync使用细节
  • 工程优化暨babel升级小记
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • nb
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • $L^p$ 调和函数恒为零
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (六)Hibernate的二级缓存
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转) Android中ViewStub组件使用
  • (转)memcache、redis缓存
  • (转载)Google Chrome调试JS
  • .NET中的十进制浮点类型,徐汇区网站设计
  • /etc/skel 目录作用
  • @Autowired标签与 @Resource标签 的区别
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [1525]字符统计2 (哈希)SDUT
  • [APIO2012] 派遣 dispatching
  • [C++] new和delete
  • [C++]拼图游戏
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [CQOI 2011]动态逆序对