代码之家  ›  专栏  ›  技术社区  ›  neu242

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

  •  160
  • neu242  · 技术社区  · 16 年前

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

    git 就像我处理文本文件一样。我将如何执行此操作,例如,在发布 git diff ?

    21 回复  |  直到 9 年前
        1
  •  115
  •   Dennis C    10 年前

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

        2
  •  115
  •   Jasper wontondon    13 年前

    • 创建第三个电子表格
    • 类型 =if(Sheet1!A1 <> Sheet2!A1, "X", "")
    • Ctrl+C (副本), Ctrl+A (全选), (粘贴)以填充表格。

    如果工作表相似,此电子表格将为空,只有少数单元格中有X,突出显示差异。取消缩放到40%以快速查看不同之处。

        3
  •  13
  •   Jasper wontondon    13 年前

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

    JExcelAPI . 这真的很容易。

    B) 右键单击Excel文件时,添加Windows shell扩展以从步骤a运行新的Java程序。这使得运行该程序非常容易。你需要用谷歌搜索如何做到这一点,但这就像编写一个*.reg文件一样简单。

    BeyondCompare . 它有一个非常酷的特性,通过在一个漂亮的表中显示分隔数据来比较分隔数据, see screenshot .

        4
  •  13
  •   Shashank Singla    10 年前

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

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

    enter image description here

    而且你不需要安装任何东西。

        5
  •  10
  •   LPL user462990    13 年前

    我找到了 xdocdiff WinMerge Plugin 开源 ,您不需要编写VBA,也不需要将excel保存为csv或xml)。它只适用于celd的容器。

    此插件还支持:

    • .rtf格式文本
    • .docx/.docm Microsoft WORD 2007(OOXML)
    • .pptx/.pptm Microsoft PowerPoint 2007(OOXML)
    • .doc Microsoft WORD版本5.0/95/97/2000/XP/2003
    • .xls Microsoft Excel版本5.0/95/97/2000/XP/2003
    • .sxw/.sxc/.sxi/.sxd OpenOffice.org
    • .odt/.ods/.odp/.odg开放文档
    • .wri Windows3.1写入
    • .mht网站档案
    • .eml从OutlookExpress导出的文件

        6
  •  6
  •   Luke Luke    16 年前

    嗯。从Excel菜单中选择窗口->并排比较?

        7
  •  5
  •   Casper    16 年前

    右键单击文档>乌龟SVN>显示日志>选择修订>右键单击“与工作副本进行比较”。

        8
  •  4
  •   Gremlin    7 年前

    Spreadsheet Compare ,它在GUI中执行相当好的差异。它检测大多数种类的变化。

        9
  •  4
  •   shubhu    6 年前

    有一个图书馆 daff

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

    我做了一个决定 Excel Diff Tool 在这个库的帮助下使用Javascript。它适用于数字和;小字符串,但输出不适用于长字符串(例如,带有小字符更改的长句)。

        10
  •  3
  •   n00begon Priidu Neemre    12 年前
        11
  •  2
  •   No AI now No AI ever    16 年前

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

        12
  •  2
  •   kbulgrien    12 年前

    Altova DiffDog

    1. 另存为.xlsx

      要检测模块化文档模型中大多数电子表格的差异,请将Excel电子表格保存为.xlsx格式的Excel工作簿进行比较。使用diffdog打开要diff的文件。它会通知您该文件是ZIP归档文件,并询问您是否要打开它进行目录比较。同意目录比较后,双击文档的逻辑部分来区分它们(使用XMLDiff模式)就变得相对简单了。.xslx文档的大部分是XML格式的数据。栅格视图非常有用。将分析重点放在已知已更改的区域上,不需要区分各个工作表。

    Excel在每次保存时都会调整某些属性名称的倾向令人恼火,但diffdog的XML差异功能包括过滤某些类型差异的功能。例如,XML格式的Excel电子表格包含 row c s c:s 使仅查看内容更改变得更加容易。

    diffdog有很多不同的功能。我之所以列出XML差异模式,仅仅是因为我没有使用另一种在差异化Excel文档时更喜欢的工具。

        13
  •  1
  •   _mike _mike    16 年前
        14
  •  1
  •   graveDust    14 年前

    用于SVN的xdocdiff插件

        15
  •  1
  •   Toby Daniel C. Sobral    12 年前

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

    它将使用Hamcrest matchers区分电子表格,并输出类似的内容。

    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)
    

        16
  •  1
  •   Chris B    12 年前

    控制键 单击这两个文件以在Windows资源管理器中选择它们,然后右键单击,TortoiseSVN->差别。

        17
  •  1
  •   kokichi88    8 年前

    我和你一样有这个问题,所以我决定写一个小工具来帮我解决。请查收 ExcelDiff_Tools . 它有几个关键点:

    • 使用公式单元格。它将比较公式和值。
    • 我试图使UI看起来像标准的diff文本查看器:修改、删除、添加、未更改状态。 请以下图为例进行查看: enter image description here
        18
  •  1
  •   Bjorn Stiel    6 年前

    我是免费开源Git扩展的合著者:

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

    它使Git可以使用任何Excel工作簿文件格式,而无需任何变通方法。

        19
  •  0
  •   ConroyP    16 年前

    Diff Doc

    • 比较MS Word(DOC、DOCX等)、Excel、PDF、RTF、Text、HTML、XML、PowerPoint或Wordperfect的文档并保留格式
    • 选择任何文档(文件)的任何部分,并将其与相同或不同文档(文件)的任何部分进行比较。
        20
  •  0
  •   lesscode    16 年前

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

    2. 如果使用Excel2007,则可以将工作簿保存为开放式XML(*.xlsx)格式,提取XML并进行区分。OpenXML文件本质上只是一个.XML文件和清单的.zip文件。

    无论哪种情况,如果你的电子表格一开始在结构上不“紧密”,你最终都会有很多“噪音”。

        21
  •  0
  •   patrick    15 年前

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