文字處理文檔是起草合同、協議、文件和許多其他官方文檔的最常用方式。如果您需要比較和合併兩個 Word 文檔,就像 Microsoft Word 的跟踪更改選項一樣,我們可以在我們的 .NET 應用程序中以編程方式進行。在本文中,我們將討論如何使用 C# 比較兩個 Word 文檔並突出顯示已識別的差異。此外,我們還將了解如何比較受密碼保護的文檔、接受和拒絕更改,以及如何使用 C# 示例比較兩個以上的文檔。

使用 .NET API 比較 Word 文檔以查找差異

此處討論以下主題:

用於比較 Word 文檔的 .NET API

GroupDocs.Comparison 提供了一個 .NET API,允許在 .NET 應用程序中比較並合併多種文件格式的各種文檔。我將使用其 .NET API,即 GroupDocs.Comparison for .NET 來比較 Word 文檔。

您可以從 下載部分 下載 DLL 或 MSI 安裝程序,或通過 NuGet 在您的 .NET 應用程序中安裝 API。

PM> Install-Package GroupDocs.Comparison

使用 C# 比較 Word 文檔

如果您有一個文檔的兩個版本,您可以比較文檔以找出它們的差異(添加、刪除)並創建一個顯示所有更改的新文檔。以下是比較任意兩個 Word 文檔並突出顯示差異的步驟。

  • 使用 Comparer 類加載第一個 Word 文檔。
  • 使用 Add() 方法將第二個文件添加到 Comparer。
  • 通過調用 Compare() 方法比較並獲取更改摘要。

以下 C# 代碼顯示瞭如何比較 Word 文檔並在生成的文檔中獲取更改。

/*
 * 使用 C# 比較兩個 Word 文檔並突出顯示更改
 */
using (Comparer comparer = new Comparer("path/document.docx"))
{
    comparer.Add("path/document-ver2.docx");
    comparer.Compare("path/compared-result.docx");
}

使用 C# 接受或拒絕 Word 文檔的已識別更改

類似於 MS Word 的跟踪更改選項,您可以接受或拒絕每個已識別的更改。以下是比較然後接受或拒絕 Word 文檔中已識別的更改的步驟。

  • 使用 Comparer 類加載源文檔並添加目標 Word 文檔。
  • 使用 Compare() 方法比較加載的文檔。
  • 使用 GetChanges() 方法獲取已識別的更改。
  • 現在您可以遍歷更改並設置每個更改的 ComparisonAction
    • 對於每個更改,您都可以選擇接受或拒絕。
  • 完成更改後,調用 ApplyChanges() 方法以獲取具有已應用更改的結果文檔。

以下 C# 源代碼比較兩個 Word 文檔,然後接受一個確定的更改,然後拒絕另一個。

/*
 * 通過使用 C# 比較 Word 文檔來接受和拒絕已識別的更改
 */
using (Comparer comparer = new Comparer("path/document-1.docx"))
{
    comparer.Add("path/document-2.docx");
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    
    // 拒絕第一個確定的更改,並且不會將其添加到結果文檔中
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges("path/rejected-change-result.docx", new ApplyChangeOptions { Changes = changes, SaveOriginalState = true });

    changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Accept;
    comparer.ApplyChanges("path/accepted-change-result.docx", new ApplyChangeOptions { Changes = changes });
}

使用 C# 比較兩個以上的文檔

同樣,可以一次比較兩個以上的文檔。以下是比較多個 Word 文檔的差異並突出顯示已識別更改的步驟。

  • 使用 Comparer 類加載第一個 Word 文檔。
  • 使用 Add() 方法繼續將其他文檔添加到 Comparer。
  • 調用 Compare() 方法獲取更改和更改摘要。

以下 C# 代碼顯示瞭如何比較兩個以上的 Word 文檔並獲取結果文檔中的更改。

/*
 * 使用 C# 比較多個 Word 文檔
 */
using (Comparer comparer = new Comparer("path/document-1.docx"))
{
    comparer.Add("path/document-2.docx");
    comparer.Add("path/document-3.docx");
    comparer.Add("path/document-4.docx");

    comparer.Compare("path/compare-result.docx");
}

使用 C# 比較受密碼保護的 Word 文檔

如果您的文檔受密碼保護,只需在加載文檔時提供密碼即可。以下步驟展示了我們如何使用 C# 比較受密碼保護的文檔的內容。

  • 通過提供密碼準備源文檔和目標文檔的加載選項。
  • 使用 Comparer 類加載源文檔。
  • 使用準備好的加載選項將目標文檔添加到 Comparer。
  • 通過調用 Compare() 方法獲取差異摘要。

以下 C# 代碼示例比較兩個受密碼保護的 Word 文件並生成突出顯示差異的結果文檔。

/*
 * 使用 C# 比較受密碼保護的 Word 文檔
 */
using (Comparer comparer = new Comparer("path/protected-document-1.docx", new LoadOptions(){ Password = "SourceFilePassword" }))
{
    comparer.Add("path/protected-document-2.docx", new LoadOptions() { Password = "TargetFilePassword" });
    comparer.Compare("path/compared-protected-docs-result.docx");
}

獲取免費的 API 許可證

您可以 獲得免費的臨時許可證 以不受評估限制地使用 API。

結論

總而言之,我們學會了使用 C# 比較兩個或多個 Word 文檔。此外,在突出差異之後,我們學會了以編程方式接受和拒絕已識別的更改。最後,我們還討論瞭如何比較 .NET 應用程序中受密碼保護的 Word 文檔。

還有許多其他控制比較結果的自定義,例如設置比較靈敏度、僅顯示摘要頁面、忽略間隙等等。詳細了解適用於 GroupDocs.Comparison for .NET。訪問它的文檔,開始為各種支持的文檔格式構建您自己的文檔比較應用程序。如有疑問,請通過論壇 聯繫我們。

也可以看看