175

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

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

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

4

21 に答える 21

115

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

于 2012-07-01T15:45:01.457 に答える
115

比較する 2 つのシートが類似している限り、外部ツールを使用せずにすばやく簡単に機能します。

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

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

于 2008-09-22T13:09:32.497 に答える
14

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

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

ここに画像の説明を入力

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

于 2014-10-17T07:07:48.280 に答える
13

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

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

B) Windows シェル拡張機能を追加して、Excel ファイルを右クリックしたときに手順 A から新しい Java プログラムを実行します。これにより、このプログラムの実行が非常に簡単になります。これを行う方法は Google で調べる必要がありますが、*.reg ファイルを作成するのと同じくらい簡単です。

C) BeyondCompareを取得します。区切られたデータを素敵なテーブルに表示して比較する非常に優れた機能があります。スクリーンショットを参照してください。

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

于 2008-09-22T14:14:02.793 に答える
10

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 マイクロソフト パワーポイント 97/2000/XP/2003
  • .sxw/.sxc/.sxi/.sxd OpenOffice.org
  • .odt/.ods/.odp/.odg ドキュメントを開く
  • .wj2/wj3/wk3/wk4/123 ロータス 123
  • .wri Windows3.1 書き込み
  • .pdf アドビ PDF
  • .mht Web アーカイブ
  • .eml OutlookExpress からエクスポートされたファイル

よろしく、アンドレス

于 2010-05-04T22:55:28.480 に答える
6

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

于 2008-09-22T23:01:39.610 に答える
5

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

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

于 2008-09-22T13:05:00.557 に答える
3

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

于 2010-08-05T15:43:35.200 に答える
2

Altova DiffDogを使用する

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

  1. .xml として保存

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

  2. .xlsx として保存

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

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

diffdog には多くの差分機能があります。私が XML 差分モードをリストしたのは、Excel 文書の差分を処理するのに適した別のツールを使用したことがないからです。

于 2013-02-07T16:47:35.443 に答える
2

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

于 2008-09-22T13:05:02.790 に答える
1

SVN用のxdocdiffプラグイン

于 2010-06-17T04:00:02.300 に答える
1

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)

そのツールを作成したことを認めるべきです (チェックされた回答が独自に転がったように)。

于 2012-09-10T21:04:24.397 に答える
1

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

于 2008-10-13T21:54:21.713 に答える
1

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

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

于 2013-04-09T09:30:32.257 に答える
0

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

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

ツールについては知りませんが、頭に浮かぶ独自のソリューションが 2 つあります。どちらも Excel が必要です。

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

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

スプレッドシートが構造的に「近い」ものでなければ、どちらの場合でも多くの「ノイズ」が発生します。

于 2008-09-22T13:02:04.153 に答える
0

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

于 2010-05-04T23:23:55.980 に答える