仕事上、2版の Word ドキュメントを受け取り、その違いを見つける必要に迫られることはよくあることです。特に、法令や教育などの分野では、文書の比較は重要であり、よく行われています。この記事では、Spire.Doc for .NET を使用して、C# と VB.NET で2つの Word ドキュメントを比較する方法について学びます。
以下は、比較される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 日間有効な一時ライセンスを取得してください。