仕事上、2版の Word ドキュメントを受け取り、その違いを見つける必要に迫られることはよくあることです。特に、法令や教育などの分野では、文書の比較は重要であり、よく行われています。この記事では、Spire.Doc for .NET を使用して、C# と VB.NET で2つの Word ドキュメントを比較する方法について学びます。 2つのドキュメントを比較し、結果を別の Word ドキュメントに保存する 2つの文書を比較し、挿入と削除の情報をリストにする 以下は、比較される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 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 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。