web-dev-qa-db-ja.com

git diffを使用して2つのスプレッドシートの読み取り可能な差分を作成するにはどうすればよいですか?

ソースコードリポジトリには多くのスプレッドシート(​​xls)があります。これらは通常gnumericまたはopenoffice.orgで編集され、主に dbUnit を使用した単体テスト用のデータベースに入力するために使用されます。私が知っているxlsファイルでdiffを行う簡単な方法はありません。これにより、非常に退屈でエラーが発生しやすくなります。

スプレッドシートをxmlに変換し、通常のdiffを実行しようとしましたが、最後の手段となるように感じています。

テキストファイルの場合と同様に、gitとの差分(およびマージ)を実行したいと思います。どのようにこれを行いますか、例えばgit diffを発行するとき?

163
neu242

共同でまったく同じ問題に直面しました。テストでは、Excelブックを出力します。バイナリdiffはオプションではありませんでした。そこで、独自のシンプルなコマンドラインツールを展開しました。 ExcelCompareプロジェクト を確認してください。実際、これによりテストを非常にうまく自動化することができます。パッチ/機能のリクエストは大歓迎です!

103
na_ka_na

外部ツールなしで迅速かつ簡単に、比較する2つのシートが類似している限り機能します。

  • 3番目のスプレッドシートを作成する
  • 左上のセルに=if(Sheet1!A1 <> Sheet2!A1, "X", "")と入力します(または同等のもの:実際のセルをクリックして、数式に参照を自動的に挿入します)
  • Ctrl+C (コピー)、 Ctrl+A (すべて選択)、 Ctrl+V (貼り付け)シートを埋めます。

シートが類似している場合、Xが含まれるいくつかのセルを除き、このスプレッドシートは空になり、違いが強調表示されます。 40%にズームを解除すると、違いがすぐにわかります。

109
Laurent

過去にExcelブックの比較を何度も行ってきました。私の手法は、多くのワークシートを含むワークブックで非常にうまく機能しますが、セルの内容のみを比較し、セルの書式設定、マクロなどは比較しません。また、コーディングが含まれますが、多くの大きなファイルを繰り返し比較する必要がある場合は価値があります。仕組みは次のとおりです。

A)すべてのワークシートをステップスルーし、すべてのデータをタブ区切りファイルに保存する簡単なダンププログラムを作成します。ワークシートごとに1つのファイルを作成し(ワークシート名をファイル名として使用します(例:「MyWorksheet.tsv」)、プログラムを実行するたびにこれらのファイル用の新しいフォルダーを作成します。 Excelファイル名の後にフォルダーに名前を付け、タイムスタンプを追加します。 「20080922-065412-MyExcelFile」。 JExcelAPI というライブラリを使用して、Javaでこれを行いました。本当に簡単です。

B)Windowsシェル拡張を追加して、Excelファイルを右クリックしたときに、ステップAの新しいJavaプログラムを実行します。これにより、このプログラムを非常に簡単に実行できます。 Googleでこれを行う方法が必要ですが、*。regファイルを書くのと同じくらい簡単です。

C)Get BeyondCompare 。区切られたデータをニーステーブルに表示して比較する非常に便利な機能 スクリーンショットを参照

D)これで、Excelファイルを簡単に比較する準備が整いました。 Excelファイル1を右クリックして、ダンププログラムを実行します。ワークシートごとに1つのファイルを持つフォルダーが作成されます。 Excelファイル2を右クリックして、ダンププログラムを実行します。ワークシートごとに1つのファイルを持つ2番目のフォルダーが作成されます。次に、BeyondCompare(BC)を使用してフォルダーを比較します。各ファイルはワークシートを表しているため、ワークシートに違いがある場合、BCはこれを表示し、ドリルダウンしてファイル比較を行うことができます。 BCは比較をNiceテーブルレイアウトで表示し、興味のない行と列を非表示にできます。

12
thvo

この無料のオンラインツールを試すことができます- www.cloudyexcel.com/compare-Excel/

行の追加、削除、変更などの点で、優れた視覚的出力をオンラインで提供します。

enter image description here

さらに、何もインストールする必要はありません。

11
Shashank Singla

xdocdiff WinMerge Plugin が見つかりました。これはWinMergeのプラグインです(OpenSourceFreewareの両方ではありません) VBAを記述する必要も、Excelをcsvやxmlに保存する必要もありません)。それはちょうどセルドの含有量に対して機能します。

このプラグインは以下もサポートしています。

  • .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ロータス123
  • .wri Windows3.1書き込み
  • .pdf Adob​​e PDF
  • .mht Webアーカイブ
  • .eml OutlookExpressからエクスポートされたファイル

よろしく、アンドレス

10
Andres

うーん。 Excelメニューから[ウィンドウ]-> [並べて比較]を選択しますか?

6
Luke

Subversionでコミットと更新を行うためにTortoiseSVNを使用していますか?差分ツールがありますが、Excelファイルを比較するのはまだユーザーフレンドリーではありません。私の環境(Win XP、Office 2007)では、2つのExcelファイルを開いて並べて比較できます。

ドキュメントを右クリック> Tortoise SVN>ログを表示>リビジョンを選択>「作業コピーと比較」を右クリックします。

5
Casper

ライブラリがあります daff (データ差分の略)テーブルを比較し、差分の概要を作成し、その概要をパッチファイルとして使用するのに役立ちます。

Haxeで記述されているため、主要な言語でコンパイルできます。

このライブラリを利用して、JavaScriptで Excel Diff Tool を作成しました。それは数字と小さな文字列でうまく機能しますが、出力は長い文字列には理想的ではありません(例えば、小さな文字が変更された長い文)。

3
shubhu

ファイルをcsvまたは他のテキスト形式にエクスポートし、それらを比較することをいくつかの応答が示唆していることを知っています。具体的に言及したことはありませんが、Beyond Compare 3には、サポートする追加のファイル形式がいくつかあります。 追加のファイル形式 を参照してください。 Microsoft Excelファイル形式のいずれかを使用すると、2つのExcelファイルを別の形式オプションにエクスポートせずに簡単に比較できます。

3
mattsmith321

MS Officeの新しいバージョンには スプレッドシート比較 が付属しており、GUIでかなり素敵なdiffを実行します。ほとんどの種類の変更を検出します。

3
Gremlin

Altova DiffDog を使用します

DiffdogのXML diffモードとグリッドビューを使用して、読みやすい表形式で違いを確認します。どんな複雑なスプレッドシートでも、テキストの差分処理は非常に困難です。このツールを使用すると、さまざまな状況で少なくとも2つの方法を実行できます。

  1. .xmlとして保存

    単純な1シートのスプレッドシートの違いを検出するには、Excelスプレッドシートを保存して、XMLスプレッドシート2003として.xml拡張子を付けて比較します。

  2. .xlsxとして保存

    モジュール化されたドキュメントモデルのほとんどのスプレッドシートの違いを検出するには、Excelスプレッドシートを保存して、.xlsx形式のExcelワークブックとして比較します。 diffdogでdiffするファイルを開きます。ファイルがZipアーカイブであることを通知し、ディレクトリ比較のためにファイルを開くかどうかを尋ねます。ディレクトリの比較に同意すると、ドキュメントの論理部分をダブルクリックしてそれらを比較するのが比較的簡単になります(XML diffモードを使用)。 .xslxドキュメントのほとんどの部分はXML形式のデータです。グリッドビューは非常に便利です。個々のシートを比較して、変更されたことがわかっている領域に分析の焦点を合わせるのは簡単です。

保存するたびに特定の属性名を微調整するというExcelの傾向は面倒ですが、diffdogのXML差分機能には、特定の種類の違いをフィルタリングする機能が含まれています。たとえば、XML形式のExcelスプレッドシートには、保存のたびに名前が変更されるrow属性(スタイル)を持つcおよびs要素が含まれます。 c:sのようなフィルターを設定すると、コンテンツの変更のみを表示するのがはるかに簡単になります。

diffdogには多くのdiff'ing機能があります。 XML差分モードをリストしたのは、Excelドキュメントの差分に関しては、気に入った別のツールを使用したことがないためです。

2
kbulgrien

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)

私たちがそのツールを書いたことを認定する必要があります(カチカチ音をたてた答えが自分で転がしたように)。

1
Toby

差分の実行が重要な場合は、SYLKファイル形式を使用します。これはテキストベースの形式であり、バイナリ形式よりも比較が簡単かつコンパクトになります。また、Excel、Gnumeric、およびOpenOffice.orgと互換性があるため、3つのツールはすべて連携して動作するはずです。 SYLK Wikipedia Article

1
Adam Hawkes

私はあなたのような問題を抱えていたので、私を助けるために小さなツールを書くことにしました。 ExcelDiff_Tools を確認してください。いくつかの重要なポイントがあります:

  • Xls、xlsx、xlsmをサポートします。
  • 数式セル付き。数式と値の両方を比較します。
  • UIを標準のdiffテキストビューアーのように変更しようとしました。変更、削除、追加、未変更のステータスです。例として以下の画像をご覧ください: enter image description here
1
kokichi88

sVNのxdocdiffプラグイン

1
graveDust

TortoiseSVNをお持ちの場合は、次のことができます CTRL 2つのファイルをクリックしてWindowsエクスプローラーで選択し、右クリックしてTortoiseSVN-> Diffを選択します。

これは、大きなデータセットで小さな変更を探している場合に特に有効です。

1
Chris B

2つのファイルでopenofficeのドキュメント比較機能を呼び出すopenofficeマクロ here を見つけました。残念ながら、openofficeのスプレッドシートの比較は少し不安定です。 [すべて拒否]ボタンを使用して、ドキュメントに余分な列を挿入しました。

1
_mike

Diff Doc はあなたが探しているものかもしれません。

  • MS Word(DOC、DOCXなど)、Excel、PDF、リッチテキスト(RTF)、テキスト、HTML、XML、PowerPoint、またはWordperfectのドキュメントを比較し、書式を保持
  • 任意のドキュメント(ファイル)の任意の部分を選択し、同じまたは異なるドキュメント(ファイル)の任意の部分と比較します。
0
ConroyP

私はツールを知りませんが、思い浮かぶ2つのロールユア独自のソリューションがあり、どちらもExcelを必要とします:

  1. 2つのワークブックの各ワークシート、行、列、およびセルをステップ実行し、相違点を報告するVBAコードを作成できます。

  2. Excel 2007を使用している場合、ワークブックをOpen-XML(* .xlsx)形式で保存し、XMLを抽出してそれを比較できます。 Open-XMLファイルは、基本的に.xmlファイルとマニフェストの.Zipファイルにすぎません。

スプレッドシートが最初から構造的に「近く」ではない場合、どちらの場合も多くの「ノイズ」になります。

0
lesscode

私は無料のオープンソースGit拡張機能の共著者です。

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

回避策なしで、GitをExcelブックファイル形式で動作させることができます。

0
Bjoern Stiel

Cvsに変換してからバージョン管理システムにアップロードし、高度なバージョン管理diffツールを使用してdiffします。 perforceを使用したときは、優れたdiffツールがありましたが、その名前は忘れていました。

0
astronought