チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Doc for .NET»文書操作»C#/VB.NET:2つの Word ドキュメントを比較する方法
2022-09-30

C#/VB.NET:2つの Word ドキュメントを比較する方法

仕事上、2版の Word ドキュメントを受け取り、その違いを見つける必要に迫られることはよくあることです。特に、法令や教育などの分野では、文書の比較は重要であり、よく行われています。この記事では、Spire.Doc for .NET を使用して、C# と VB.NET で2つの Word ドキュメントを比較する方法について学びます。

以下は、比較される2つの Word ドキュメントのスクリーンショットです。

C#/VB.NET:2つの Word ドキュメントを比較する方法

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

2つのドキュメントを比較し、結果を別の Word ドキュメントに保存する

比較結果を別の Word ドキュメントに保存すると、挿入、削除、書式の変更など、元のドキュメントに加えられたすべての変更を確認することができます。以下は、Spire.Doc for .NET を使用して、2つの Word ドキュメントを比較し、結果を別の Word ドキュメントに保存する手順です。

  • Document クラスのオブジェクトを初期化しながら、2つの Word ドキュメントを別々に読み込みます。
  • Document.Compare() メソッドを使用して、2つのドキュメントを比較します。
  • その結果を Document.SaveToFile() メソッドを使用して別の Word ドキュメントに保存します。
  • C#
  • VB.NET
using Spire.Doc;

namespace CompareDocuments
{
    class Program
    {
        static void Main(string[] args)
        {
            //Wordドキュメントを読み込む
            Document doc1 = new Document("C:\\Sample1.docx");

            //もう一方のWordドキュメントを読み込む
            Document doc2 = new Document("C:\\Sample2.docx");

            //Compare two documents
            doc1.Compare(doc2, "桜桃子");

            //Save the differences in a third document
            doc1.SaveToFile("違い.docx", FileFormat.Docx2013);
            doc1.Dispose();
        }
    }
}
Imports Spire.Doc

Namespace CompareDocuments
    Class Program
        Shared Sub Main(ByVal args() As String)
            'Wordドキュメントを読み込む
            Dim doc1 As Document = New Document("C:\\Sample1.docx")

            'もう一方のWordドキュメントを読み込む
            Dim doc2 As Document = New Document("C:\\Sample2.docx")

            'Compare two documents
            doc1.Compare(doc2, "桜桃子")

            'Save the differences in a third document
            doc1.SaveToFile("違い.docx", FileFormat.Docx2013)
            doc1.Dispose()
        End Sub
    End Class
End Namespace

C#/VB.NET:2つの Word ドキュメントを比較する方法

2つの文書を比較し、挿入と削除の情報をリストにする

開発者は、すべての差分ではなく、挿入と削除の情報のみを取得したいと思うかもしれません。以下は、挿入と削除の情報を取得し、それらを2つの別々のリストに入れる手順です。

  • Document クラスのオブジェクトを作成する際に、2つの Word ドキュメントを別々に読み込みます。
  • Document.Compare() メソッドを使用して、2つのドキュメントを比較する。
  • DifferRevisions クラスのコンストラクター関数を使用して、リビジョンを取得します。
  • DifferRevisions.InsertRevisions プロパティを使用して、挿入情報のリストを取得します。
  • DifferRevisions.DeleteRevisions プロパティを使用して、削除情報のリストを取得します。
  • 2つのリストの要素をループして、特定の挿入と削除の内容を取得します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Fields;
using System;

namespace GetDifferencesInList
{
    class Program
    {
        static void Main(string[] args)
        {
            //Wordドキュメントを読み込む
            Document doc1 = new Document("C:\\Sample1.docx");

            //もう一方のWordドキュメントを読み込む
            Document doc2 = new Document("C:\\Sample2.docx");

            //2つのWordドキュメントを比較する
            doc1.Compare(doc2, "桜桃子");

            //改訂を取得する
            DifferRevisions differRevisions = new DifferRevisions(doc1);

            //挿入の改訂を返し、リストに入れる
            var insetRevisionsList = differRevisions.InsertRevisions;

            //削除の改訂を返し、リストに入れる
            var deletRevisionsList = differRevisions.DeleteRevisions;

            //2つのint型変数を作成する
            int m = 0;
            int n = 0;

            //挿入改訂のリストをループする
            for (int i = 0; i < insetRevisionsList.Count; i++)
            {
                if (insetRevisionsList[i] is TextRange)
                {
                    m += 1;
                    //特定の改訂を取得し、その内容を取得する
                    TextRange textRange = insetRevisionsList[i] as TextRange;
                    Console.WriteLine("挿入 #" + m + ":" + textRange.Text);
                }
            }
            Console.WriteLine("=====================");

            //削除改訂のリストをループする
            for (int i = 0; i < deletRevisionsList.Count; i++)
            {
                if (deletRevisionsList[i] is TextRange)
                {
                    n += 1;
                    //特定の改訂を取得し、その内容を取得する
                    TextRange textRange = deletRevisionsList[i] as TextRange;
                    Console.WriteLine("削除 #" + n + ":" + textRange.Text);
                }
            }
            Console.ReadKey();
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Fields
Imports System

Namespace GetDifferencesInList
    Class Program
        Shared Sub Main(ByVal args() As String)
            'Wordドキュメントを読み込む
            Dim doc1 As Document = New Document("C:\\Sample1.docx")

            'もう一方のWordドキュメントを読み込む
            Dim doc2 As Document = New Document("C:\\Sample2.docx")

            '2つのWordドキュメントを比較する
            doc1.Compare(doc2, "桜桃子")

            '改訂を取得する
            Dim differRevisions As DifferRevisions = New DifferRevisions(doc1)

            '挿入の改訂を返し、リストに入れる
            Dim insetRevisionsList As var = differRevisions.InsertRevisions

            '削除の改訂を返し、リストに入れる
            Dim deletRevisionsList As var = differRevisions.DeleteRevisions

            '2つのint型変数を作成する
            Dim m As Integer = 0
            Dim n As Integer = 0

            '挿入改訂のリストをループする
            Dim i As Integer
            For i = 0 To insetRevisionsList.Count - 1 Step i + 1
                If TypeOf insetRevisionsList(i) Is TextRange Then
                    m += 1
                    '特定の改訂を取得し、その内容を取得する
                    Dim textRange As TextRange = insetRevisionsList(i) As TextRange 
                    Console.WriteLine("挿入 #" + m + ":" + textRange.Text)
                End If
            Next
            Console.WriteLine("=====================")

            '削除改訂のリストをループする
            Dim i As Integer
            For i = 0 To deletRevisionsList.Count - 1 Step i + 1
                If TypeOf deletRevisionsList(i) Is TextRange Then
                    n += 1
                    '特定の改訂を取得し、その内容を取得する
                    Dim textRange As TextRange = deletRevisionsList(i) As TextRange 
                    Console.WriteLine("削除 #" + n + ":" + textRange.Text)
                End If
            Next
            Console.ReadKey()
        End Sub
    End Class
End Namespace

C#/VB.NET:2つの Word ドキュメントを比較する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 739 times