如何使用git diff创建两个电子表格的可读差异?

neu*_*242 165 git version-control diff merge xls

我们的源代码库中有很多电子表格(xls).这些通常使用gnumeric或openoffice.org进行编辑,主要用于使用dbUnit填充数据库进行单元测试.在我知道的xls文件上没有简单的方法来做差异,这使得合并非常繁琐且容易出错.

我试图将电子表格转换为xml并进行常规差异,但它确实感觉它应该是最后的手段.

我想像git处理文本文件一样执行diffing(和合并).我怎么做,例如发行时git diff

Lau*_*ent 109

无需外部工具即可快速轻松地工作,只要您比较的两张纸相似:

  • 创建第三个电子表格
  • 键入=if(Sheet1!A1 <> Sheet2!A1, "X", "")左上角的单元格(或等效的:单击实际单元格以自动将引用插入到公式中)
  • Ctrl+C(复制),Ctrl+A(全选),Ctrl+V(粘贴)填写表格.

如果工作表相似,则此电子表格将为空,除了包含X的几个单元格,突出显示差异.取消缩放至40%以快速查看有何不同之处.

  • 这不是逐个细胞比较吗?我的意思是如果左​​侧在顶部有一个额外的行,它将给所有剩余的行(和单元格)不同.如果是这样,那不是很有用. (6认同)
  • 我改变了公式,所以我不必去看看确切的差异是什么.= IF(Sheet1!A1 <> Sheet2!A1,CONCATENATE("Sheet 1 =",Sheet1!A1,"Sheet 2 =",Sheet2!A1),"") (5认同)
  • 该答案比较单元格值而不是公式。如果您想比较单元格公式而不是这些公式生成的值,请首先将所有公式转换为静态值,然后使用此答案中的技术。要转换(首先备份您的电子表格),请在 = 上查找/替换并替换为其他内容,例如 %%%。现在对结果使用这种比较技术。 (2认同)

na_*_*_na 106

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

  • @KimStacks是适用于所有xls,xlsx,ods.甚至可以比较任何一种类型,例如xls v/s xlsx. (2认同)
  • @PietroBattiston请在github中记录一张票,我会看看它. (2认同)

thv*_*hvo 12

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

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

B)在右键单击Excel文件时,添加Windows外壳扩展以从步骤A运行新的Java程序.这使得运行该程序变得非常容易.您需要谷歌如何做到这一点,但它就像编写*.reg文件一样简单.

C)获得BeyondCompare.它有一个非常酷的功能,通过在一个漂亮的表中显示来比较分隔数据,请参见屏幕截图.

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


Sha*_*gla 11

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

它在线上提供了良好的视觉输出,包括添加,删除,更改等行.

在此输入图像描述

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


小智 10

我找到了xdocdiff WinMerge插件.它是WinMerge的插件(OpenSourceFreeware,你不需要编写VBA也不需要将excel保存到csv或xml).它适用于celd的包含.

此插件还支持:

  • .rtf富文本
  • .docx/.docm Microsoft WORD 2007(OOXML)
  • .xlsx/.xlsm Microsoft Excel 2007(OOXML)
  • .pptx/.pptm Microsoft PowerPoint 2007(OOXML)
  • .doc Microsoft WORD ver5.0/95/97/2000/XP/2003
  • .xls Microsoft Excel ver5.0/95/97/2000/XP/2003
  • .ppt Microsoft PowerPoint 97/2000/XP/2003
  • .sxw/.sxc/.sxi/.sxd OpenOffice.org
  • .odt/.ods/.odp/.odg打开文档
  • .wj2/wj3/wk3/wk4/123 Lotus 123
  • .wri Windows3.1写
  • .pdf Adob​​e PDF
  • .mht网络档案
  • .eml从OutlookExpress导出的文件

关注,安德烈斯


小智 6

嗯.从Excel菜单中选择Window - >并排比较?

  • 是的,没有突出显示,所以唯一的好处是同步滚动. (2认同)

Cas*_*per 5

您是否使用TortoiseSVN进行颠覆的提交和更新?它有一个diff工具,但比较Excel文件仍然不是真正用户友好.在我的环境(Win XP,Office 2007)中,它打开了两个excel文件,用于并排比较.

右键单击文档> Tortoise SVN>显示日志>选择修订>右键单击"与工作副本比较".