C#を使用して2つ以上のWordドキュメントを比較する

C#を使用して2つ以上のWordドキュメントを比較する

.NETアプリケーションのプログラムによる相違点と類似点について、2つ以上のWord文書を簡単に比較したり、同じWordファイルの複数のバージョンを比較したりできます。この記事では、2つ以上のWord文書を比較し、C#を使用して違いを強調する方法を学習します。

この記事では、次のトピックについて説明/取り上げています。

DOCXファイルを比較するためのC#API

2つ以上のDOCXファイルを比較するために、GroupDocs.Comparison for .NETAPIを使用します。 2つ以上のドキュメントを比較し、単語、段落、文字のドキュメントの内容の変化を見つけます。その結果、違いを強調し、違いの要約をリストした比較ドキュメントが作成されます。また、類似したドキュメント形式間のテキストスタイルの変更や違いを検出することもできます。 APIは、PDF、HTML、Word、Excel、PowerPoint, Outlookメール、Visioダイアグラム、OpenDocument、AutoCAD、画像など、業界標準のすべてのドキュメント形式の比較をサポートしています。

APIのDLLをダウンロードするか、NuGetを使用してインストールできます。

Install-Package GroupDocs.Comparison

C#を使用して2つ以上のWordドキュメントを比較する

以下に示す簡単な手順に従って、2つ以上のWord文書をプログラムで比較できます。

  1. ソースDOCXファイルパスを使用してComparerクラスのインスタンスを作成します
  2. ターゲットDOCXファイルを使用してAdd()メソッドを呼び出し、比較に追加します
  3. 上記の手順を繰り返して、比較してさらにファイルを追加します
  4. Compare()メソッドを出力ファイルパスで呼び出します

次のコードサンプルは、2つ以上のWordドキュメントを比較する方法を示し、C#を使用して違いを強調しています。

// 比較器の初期化
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// 比較するターゲットファイルを追加します
comparer.Add("C:\\Files\\target.docx");

// 違いを比較して保存する
comparer.Compare("C:\\Files\\result.docx");
ソースおよびターゲットDOCXファイル

ソースおよびターゲットDOCXファイル

C#を使用して2つ以上のWordドキュメントを比較する

C#を使用して2つ以上のWordドキュメントを比較する

結果のドキュメントには、ドキュメントの最後に、比較で見つかったすべての変更の概要を示す概要ページも含まれています。

Comparerクラスは、比較プロセスを制御および実行できるようにするメインクラスです。 2つ以上のドキュメントを比較するためのいくつかの方法を提供します。このクラスのAdd()メソッドは、比較プロセスにファイルを追加します。以下に示すように、Add()メソッドを使用して、比較に複数のファイルを簡単に追加できます。

comparer.Add("target1.docx");
comparer.Add("target2.docx");
comparer.Add("target3.docx");

ComparerクラスのCompare()メソッドは、ソースドキュメントとターゲットドキュメントを比較します。このメソッドは、違いを強調表示し、入力パラメーターとして提供されたファイルパスに結果を保存します。

C#でストリームを使用してWord文書を比較する

以下の手順に従って、FileStreamを使用して2つ以上のWord文書を比較できます。

  1. Streamオブジェクトのソースファイルを読み取る
  2. 別のStreamオブジェクトのターゲットファイルを読み取ります
  3. ソースStreamオブジェクトを使用してComparerクラスのインスタンスを作成します
  4. 比較に追加するターゲットStreamオブジェクトでAdd()メソッドを呼び出します
  5. Compare()メソッドを出力ファイルパスで呼び出します

次のコードサンプルは、C#でFileStreamを使用してWord文書を比較する方法を示しています。

// ソースファイルとターゲットファイルを読み取る
using (Stream sourceStream = File.OpenRead("C:\\Files\\source.docx"))
using (Stream targetStream = File.OpenRead("C:\\Files\\target.docx"))
{
    // 比較器の初期化
    using (Comparer comparer = new Comparer(sourceStream))
    {
        // 比較するターゲットファイルストリームを追加します
        comparer.Add(targetStream);

        // 違いを比較して保存する
        comparer.Compare(File.Create("C:\\Files\\result.docx"));
    }
}

C#を使用して変更のテキストを取得する

以下に示す簡単な手順に従って、Word文書の比較で見つかった変更のテキストをプログラムで取得できます。

  1. ソースDOCXファイルパスを使用してComparerクラスのインスタンスを作成します
  2. ターゲットDOCXファイルを使用してAdd()メソッドを呼び出し、比較に追加します
  3. 上記の手順を繰り返して、比較してさらにファイルを追加します
  4. Compare()メソッドを呼び出します
  5. GetChanges()メソッドを呼び出して、変更の詳細を取得します
  6. 変更を表示する

次のコードサンプルは、C#を使用して変更のテキストを取得する方法を示しています。

// 比較器の初期化
Comparer 比較r = new Comparer("C:\\Files\\source.docx");

// 比較するターゲットファイルを追加します
比較r.Add("C:\\Files\\target.docx");

// 比較
比較r.Compare();

// 変更を取得
ChangeInfo[] changes = 比較r.GetChanges();

Console.WriteLine("Count of changes: " + changes.Length);

// 変更を表示
foreach (ChangeInfo change in changes)
{
    Console.WriteLine("Change Type: " + change.Type + ", Text: " + change.Text);
}
Count of changes: 10
Change Type: Inserted, Text:
Change Type: Inserted, Text:  Company ‼ HYPERLINK "http://www.aspose.com/" ¶Aspose Pty Ltd§ Division GroupDocs
Change Type: Inserted, Text:
Change Type: Inserted, Text: Cool
Change Type: Deleted, Text: test
Change Type: Inserted, Text:
Change Type: Inserted, Text: signatures
Change Type: Inserted, Text:
Change Type: Deleted, Text: Customers
Change Type: Deleted, Text: GroupDocs is used by companies of all sizes across the globe, from large multinational firms to small freelance businesses. They come to us because they have a need for a simple, one-stop-shop, document management solution.

ComparerクラスのGetChanges()メソッドを呼び出すことにより、ソースファイルとターゲットファイル間の変更のリストを取得できます。 ChangeInfoオブジェクトのリストを返します。 ChangeInfoクラスは、変更に関する情報を表し、TextTypeなどの変更の詳細を取得するためのさまざまなプロパティを提供します。

C#を使用したドキュメントプロパティの比較

以下の手順に従って、Word文書の組み込み、カスタムプロパティ、および可変プロパティをプログラムで比較できます。

  1. ソースDOCXファイルパスを使用してComparerクラスのインスタンスを作成します
  2. ターゲットDOCXファイルを使用してAdd()メソッドを呼び出し、比較に追加します
  3. 上記の手順を繰り返して、比較してさらにファイルを追加します
  4. CompareOptionsのインスタンスを作成します
  5. CompareVariablePropertyをtrueに設定します
  6. CompareDocumentPropertyをtrueに設定します
  7. 出力ファイルパスとCompareOptionsを使用してCompare()メソッドを呼び出します

次のコードサンプルは、C#を使用してドキュメントのプロパティを比較する方法を示しています。

// 比較器の初期化
Comparer 比較r = new Comparer("C:\\Files\\source.docx");

// 比較するターゲットファイルを追加します
比較r.Add("C:\\Files\\target.docx");

// 比較オプションを定義する
CompareOptions options = new CompareOptions();
options.CompareVariableProperty = true; // activate the comparison of variable properties
options.CompareDocumentProperty = true; // activate the comparison of built and custom properties

// 比較
比較r.Compare("C:\\Files\\result.docx", options);
C#を使用したドキュメントプロパティの比較

C#を使用したドキュメントプロパティの比較

さまざまな比較オプションを適用することで、比較プロセスを強化できます。この目的のために、CompareOptionsクラスでは、特定の結果を達成するためのさまざまな比較オプションを設定できます。このクラスのCompareDocumentPropertyを使用すると、Word形式の組み込みプロパティとカスタムプロパティの比較をオンにできます。 CompareVariablePropertyを使用すると、Word形式の変数プロパティの比較をオンにできます。

C#を使用してパスワードで保護されたWord文書を比較する

以下の手順に従って、パスワードで保護された2つ以上のWord文書をプログラムで比較できます。

  1. LoadOptionsクラスのインスタンスを作成します
  2. ソースファイルのパスワードを入力します
  3. ソースDOCXファイルパスとLoadOptionsを使用してComparerクラスのインスタンスを作成します
  4. ターゲットDOCXファイルパスとパスワードを使用してLoadOptionsインスタンスを使用してAdd()メソッドを呼び出します
  5. 上記の手順を繰り返して、比較してさらにファイルを追加します
  6. Compare()メソッドを出力ファイルパスで呼び出します

次のコードサンプルは、C#を使用してパスワードで保護されたWord文書を比較する方法を示しています。

// ソースファイルのロードオプションを定義する
LoadOptions sourceLoadOptions = new LoadOptions() { Password = "1234" };

// 比較器の初期化
Comparer 比較r = new Comparer("C:\\Files\\source.docx", sourceLoadOptions);

// 比較するターゲットファイルを追加します
比較r.Add("C:\\Files\\target.docx", new LoadOptions() { Password = "5678" });

// 比較
比較r.Compare("C:\\Files\\result.docx");

LoadOptionsクラスを使用すると、ドキュメントのロード中に追加のオプションを指定できます。指定する次のプロパティを提供します。

  • FontDirectories —ロードするフォントディレクトリのリスト。
  • LoadText —渡される文字列がファイルパスではなく比較テキストであることを示します(テキスト比較の場合のみ)。
  • パスワード—ドキュメントのパスワード。

C#を使用してWord文書のブックマークを比較する

以下の手順に従って、Word文書で利用可能なブックマークをプログラムで比較できます。

  1. ソースDOCXファイルパスを使用してComparerクラスのインスタンスを作成します
  2. ターゲットDOCXファイルを使用してAdd()メソッドを呼び出し、比較に追加します
  3. 上記の手順を繰り返して、比較してさらにファイルを追加します
  4. CompareOptionsのインスタンスを作成します
  5. CompareBookmarksをtrueに設定します
  6. 出力ファイルパスとCompareOptionsを使用してCompare()メソッドを呼び出します

次のコードサンプルは、C#を使用してWord文書のブックマークを比較する方法を示しています。

// 比較器の初期化
Comparer 比較r = new Comparer("C:\\Files\\source.docx");

// 比較するターゲットファイルを追加します
比較r.Add("C:\\Files\\target.docx");

// 比較オプションを定義する
CompareOptions 比較Options = new CompareOptions();
比較Options.CompareBookmarks = true; // 比較 bookmarks

// 比較
比較r.Compare("C:\\Files\\result.docx", 比較Options);
C#を使用してWord文書のブックマークを比較する

C#を使用してWord文書のブックマークを比較する

CompareBookmarksプロパティを使用すると、ソースドキュメントとターゲットドキュメントで使用可能なブックマークを比較できます。

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、2つ以上のWord文書を比較し、C#を使用して違いを強調する方法を学びました。また、強調表示された変更のリストを取得する方法も学習しました。さらに、Word文書のブックマークをプログラムで比較する方法を学びました。さらに、C#を使用してパスワードで保護されたWord文書を比較する方法を学びました。 ドキュメントを使用して、GroupDocs.Comparison for.NETAPIの詳細を確認できます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目