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

前言

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

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

1
SPREADSHEETCOMPARE.EXE ExcelCompare.txt

脚本内容

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

1
2
3
4
5
6
7
@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 两个文件了:

1
2
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 程序时参数是一个包含了待比较文件名的临时文件,这一点和其他的比较工具有些不同
  • 脚本中我们生成的临时文件无需手动处理,再打开待比较文件后会自动删除

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

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

2020-10-12 00:16:52

Albert Shi wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客