我尝试将电子表格转换为xml并进行常规比较,但这真的感觉应该是最后的选择。
我想像处理文本文件一样使用
git
来进行比较(和合并)。当我发出git diff
命令时,我该如何做?我们公司也遇到了同样的问题。我们的测试输出为Excel工作簿,因此二进制比较不是一个选项。所以我们开发了自己的简单命令行工具。请查看ExcelCompare项目。实际上,这使我们能够非常好地自动化测试。欢迎提交补丁/功能请求!
快速简便,无需外部工具,只要两个表格相似就能很好地发挥作用:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
(或同等语句:单击实际单元格可自动插入引用)如果这两个表格相似,则该电子表格除了一些带有“ X” 的单元格突出显示差异外,将为空。缩小到40%以快速查看不同之处。
=Sheet1!A1=Sheet2!A1
。这将打印TRUE或FALSE。然后,您可以进行条件格式化或=countif(A1:B2, FALSE)
或类似操作。 - user2023861我曾经对Excel工作簿进行了很多比较。我的技巧适用于有许多工作表的工作簿,但仅比较单元格内容,而不是单元格格式、宏等。此外,需要编写一些代码,但如果您需要重复比较大量文件,则非常值得。以下是具体步骤:
A) 编写一个简单的转储程序,遍历所有工作表并将所有数据保存到以制表符分隔的文件中。每个工作表创建一个文件(使用工作表名称作为文件名,例如“MyWorksheet.tsv”),每次运行程序时都创建一个新文件夹。将文件夹命名为Excel文件名,并添加时间戳,例如“20080922-065412-MyExcelFile”。我使用一个叫做JExcelAPI的库在Java中完成了这个步骤。非常简单易学。
B) 添加Windows shell扩展程序,在右键单击Excel文件时运行步骤A中的Java程序。这样可以轻松运行该程序。您需要Google如何做到这一点,但只需要编写一个*.reg文件即可。
C) 获取BeyondCompare。它有一个非常酷的功能,可以通过在漂亮的表格中显示分隔的数据进行比较,请参见屏幕截图。
D) 您现在已经可以轻松地比较Excel文件了。右键单击Excel文件1并运行转储程序。它将创建一个文件夹,其中每个工作表都有一个文件。右键单击Excel文件2并运行转储程序。它将创建第二个文件夹,并为每个工作表创建一个文件。然后使用BeyondCompare(BC)比较这两个文件夹。每个文件代表一个工作表,因此如果工作表中存在差异,则BC将显示这一点,并且您可以深入了解并进行文件比较。BC会以漂亮的表格布局显示比较结果,您可以隐藏不感兴趣的行和列。
我发现了 xdocdiff WinMerge 插件。它是WinMerge的插件(开源和免费软件,您无需编写VBA或将Excel保存为CSV或XML),它只适用于单元格内容。
此插件还支持以下格式:
敬礼,安德烈斯
有一个名为daff(数据差异)的库可以帮助比较表格,生成它们的差异摘要,并将此类摘要用作补丁文件。
它是用Haxe编写的,因此可以在主要语言中进行编译。
我使用这个库在Javascript中制作了一个Excel Diff Tool。 它适用于数字和小字符串,但对于长字符串(例如具有轻微字符更改的长句子),输出并不理想。
我知道有几种方法建议将文件导出为csv或其他文本格式,然后进行比较。尽管没有特别提到,但Beyond Compare 3支持多种附加文件格式。请参见附加文件格式。使用Microsoft Excel文件格式之一,您可以轻松比较两个Excel文件,而无需通过导出到另一种格式的选项。
diff
合并没有帮助,但这个电子表格比较工具非常适合我的需求(检查OpenXML自动化输出与Excel COM自动化输出之间的差异)。 - ErrCode
git diff
和gitk
。 - nmz787