我们有很多的电子表格(xls)在我们的源代码存储库。这些通常是编辑gnumeric或openoffice.org和大多是用来填充数据库单元的测试, dbUnit.没有简单的方法上的差异xls文件,我知道,这使得合并极为繁琐且容易出错。

我试图转换的电子表格,以xml和做定期的差异,但它真的感觉就像它应该是一种最后的手段。

我想到执行的比较(合并)与 git 因为我做的有文本文件。我怎么会这样做,例如当发出 git diff?

有帮助吗?

解决方案

我们在公司面临同样的问题。我们的测试输出excel工作簿。二元差异不是一种选择。所以我们推出了自己的简单命令行工具。查看 ExcelCompare项目。事实上,这使我们可以很好地自动化我们的测试。补丁/功能请求非常欢迎!

其他提示

快速简单没有外部工具,运作良好,只要两片进行比较是相似的:

  • 创造第三个电子表格
  • 类型 =if(Sheet1!A1 <> Sheet2!A1, "X", "") 在左上角元(或等效的:点击的实际细胞自动具有引用的插入式)
  • Ctrl+C (复印件), Ctrl+A (选择), Ctrl+V (贴),以填补片。

如果单是类似的,这种电子表格将空除了一些细胞在他们,突出了差异。放大还原到40%迅速看到什么不同。

我过去做过很多Excel工作簿的比较。我的技术适用于具有许多工作表的工作簿,但它只比较单元格内容,而不是单元格格式,宏等。此外,还涉及一些编码,但如果你必须反复比较很多大文件,这是非常值得的。以下是它的工作原理:

A)编写一个简单的转储程序,遍历所有工作表并将所有数据保存到制表符分隔的文件中。每个工作表创建一个文件(使用工作表名称作为文件名,例如“MyWorksheet.tsv”),并在每次运行程序时为这些文件创建一个新文件夹。在excel文件名后面命名文件夹并添加时间戳,例如&QUOT; 20080922-065412-MyExcelFile&QUOT ;.我使用名为 JExcelAPI 的库在Java中完成此操作。这真的很容易。

B)在右键单击Excel文件时,添加Windows外壳扩展以从步骤A运行新的Java程序。这使得运行该程序变得非常容易。您需要Google如何执行此操作,但这与编写* .reg文件一样简单。

C)获取 BeyondCompare 。它有一个非常酷的功能,通过在一个漂亮的表格中显示它来比较分隔数据,见截图

D)您现在可以轻松地比较Excel文件了。右键单击Excel文件1并运行转储程序。它将创建一个文件夹,每个工作表包含一个文件。右键单击Excel文件2并运行转储程序。它将创建第二个文件夹,每个工作表包含一个文件。现在使用BeyondCompare(BC)来比较文件夹。每个文件代表一个工作表,因此如果工作表中存在差异,BC将显示此信息,您可以向下钻取并进行文件比较。 BC将以漂亮的表格布局显示比较,您可以隐藏您不感兴趣的行和列。

您可以尝试这个免费的在线工具 - www.cloudyexcel.com/compare-excel/

在添加,删除,更改等行方面,它提供了良好的在线视觉输出。

另外,你不必安装任何东西。

我已经找到了 xdocdiff WinMerge插件.它是一个插件WinMerge(两个 开放源代码免费的, 你不需要写一VBA也没有保存一个excel csv或xml)。它的工作只是为celd的所包含的内容。

这个插件的支持:

  • .rtf丰富的文本
  • .尝/.高端便携Microsoft WORD2007(OOXML)
  • .您/.xlsm Microsoft Excel2007年(OOXML)
  • .ppt/.pptm Microsoft PowerPoint2007(OOXML)
  • .doc Microsoft WORD ver5.0/95/97/2000/XP/2003年
  • .xls Microsoft Excel ver5.0/95/97/2000/XP/2003年
  • .ppt Microsoft PowerPoint97/2000年/XP/2003年
  • .sxw/.苏锡常/.sxi/.千OpenOffice.org
  • .口崩片/.ods/.臭氧消耗潜能值/.总干事办公室开放文档
  • .wj2/wj3/wk3/wk4/123莲123
  • .世界资源学会Windows3.1写
  • .pdf Adobe PDF
  • .记网的档案
  • .eml出口文件从OutlookExpress

一方面,安德烈斯

嗯。从Excel菜单中选择Window - &gt;并排比较?

你用如今做你的提交和更新在颠复?它有一个比较工具,但是比较Excel文件仍然是不是真的用户友好。在我的环境的(赢XP,办公室2007年),它开辟了两个excel文件侧比较。

右键文件>龟SVN>显示记录>选择修订>权击的"比较工作,复制"。

我知道有几个回复建议将文件导出为csv或其他文本格式,然后比较它们。我没有看到它具体提到,但Beyond Compare 3有许多其支持的附加文件格式。请参阅其他文件格式。使用其中一种Microsoft Excel文件格式,您可以轻松地比较两个Excel文件,而无需通过导出到另一种格式选项。

较新版本的MS Office附带电子表格比较,它在GUI中执行相当不错的差异。它可以检测到大多数变化。

有一个图书馆 daff (数据差异的简称),它有助于比较表,产生一个他们的差异摘要,并使用这样的摘要作为补丁文件。

它是用Haxe编写的,所以它可以用主要语言编译。

我借助此库在Javascript中制作了 Excel Diff Tool 。它适用于数字和数字小字符串,但输出不适合长字符串(例如长字符改变较小的句子)。

使用 Altova DiffDog

使用diffdog的XML diff模式和Grid View以易于阅读的表格格式查看差异。对于任何复杂的电子表格来说,文本差异很大。使用此工具,在各种情况下至少有两种方法是可行的。

  1. 另存为.xml

    要检测简单的单页电子表格的差异,请保存Excel电子表格,将其作为XML Spreadsheet 2003与.xml扩展名进行比较。

  2. 另存为.xlsx

    要检测模块化文档模型中大多数电子表格的差异,请将Excel电子表格另存为.xlsx格式的Excel工作簿。使用diffdog打开要扩散的文件。它会通知您该文件是ZIP存档,并询问您是否要打开它以进行目录比较。在同意目录比较时,双击文档的逻辑部分以区分它们(使用XML diff模式)变得相对简单。 .xslx文档的大多数部分都是XML格式的数据。网格视图非常有用。分析单个工作表以将分析重点放在已知已发生变化的区域上是微不足道的。

  3. Excel倾向于在每次保存时调整某些属性名称都很烦人,但是diffdog的XML差异功能包括过滤某些差异的能力。例如,XML格式的Excel电子表格包含 row c 元素,这些元素具有 s 属性(样式),每次保存都会重命名。设置像 c:s 这样的过滤器可以更轻松地仅查看内容更改。

    diffdog具有很多差异化能力。我只列出了XML diff模式,因为我没有使用过另一种我喜欢的差异Excel文档的工具。

如果执行差异很重要,我会使用SYLK文件格式。它是一种基于文本的格式,应该使比较比二进制格式更容易和更紧凑。它与Excel,Gnumeric和OpenOffice.org兼容,因此所有这三个工具都应该能够很好地协同工作。 SYLK Wikipedia Article

我发现了一个openoffice宏这里将会调用openoffice的比较文档功能在两个文件上。不幸的是,openoffice的电子表格比较看起来有点不稳定;我只是让'拒绝所有'按钮在我的文档中插入一个多余的列。

SVN的xdocdiff插件

如果您使用的是Java,可以尝试 simple-excel

它会使用Hamcrest匹配器来区分电子表格并输出类似的内容。

java.lang.AssertionError:
Expected: entire workbook to be equal
     but: cell at "C14" contained <"bananas"> expected <nothing>,
          cell at "C15" contained <"1,850,000 EUR"> expected <"1,850,000.00 EUR">,
          cell at "D16" contained <nothing> expected <"Tue Sep 04 06:30:00">
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)

我应该有资格说我们编写了这个工具(就像自己编写的答案一样)。

如果您有TortoiseSVN,那么您可以 CTRL 单击这两个文件在Windows资源管理器中选择它们,然后右键单击TortoiseSVN-&gt; Diff。

如果您正在寻找大型数据集中的小变化,这种方法效果特别好。

我的问题就像你所以我决定编写的小工具来帮助我。请检查 ExcelDiff_Tools.它涉及几个关键点:

  • 支持xls,您,xlsm.
  • 与式电池。它将比较式和价值。
  • 我试着让UI看起来像标准的差异的文本浏览器:修改,删除,增加,保持不变的状态。请看一看与图像下面的例子:enter image description here

差异医生 可能是你要找的。

  • 比较文件的MS Word(DOC,WORD等),Excel,PDF,丰富的文本(RTF)、文字、HTML,XML,PowerPoint或Wordperfect和保留的格式
  • 选择任何部分的任何文件(文件),并比较它反对任何部分的相同或不同的文件(文件)。

我不知道有任何工具,但有两种自行解决方案可以想到,都需要Excel:

  1. 您可以编写一些VBA代码,逐步执行两个工作簿的每个工作表,行,列和单元格,报告差异。

  2. 如果使用Excel 2007,则可以将工作簿保存为Open-XML(* .xlsx)格式,提取XML并对其进行区分。 Open-XML文件本质上只是.xml文件和清单的.zip文件。

  3. 你最终会得到很多“噪音”。在任何一种情况下,如果您的电子表格在结构上并非“接近”开头。

转换为cvs然后上传到版本控制系统,然后使用高级版本控制差异工具进行差异处理。当我使用perforce它有一个伟大的差异工具,但我忘了它的名字。

我的合作者的一个免费的开放源Git扩展:

https://github.com/ZoomerAnalytics/git-xltrail

它使Git工作与任何Excel文件格式,没有任何解决方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top