介紹
無論您處理的是合約、內部政策、技術規範,或是行銷文案,模式都是相同的:您很快就會累積多個 .docx 版本,並在某個時點需要查看它們之間究竟有什麼變更。Word 內建的 Compare 對話框對於偶爾的手動檢查而言還算不錯,但當比較成為日常流程或需要在伺服器端自動化時,就顯得力不從心。
GroupDocs.Comparison for .NET 讓您可以在程式碼中執行比較,並以審閱者偏好的格式產出結果。此函式庫支援兩種 Word 文件的輸出模式:
- 修訂模式 — 差異以 Word 修訂(追蹤變更)標記的形式寫入。審閱者開啟檔案後,會看到熟悉的 Review → Accept / Reject 控制項,逐一處理變更。
- 強調模式 — 插入、刪除與修改的文字會直接以顏色標記顯示在文件正文中,讓您在閱讀最終文字時一眼即可看出差異。
在本文中,我們將示範這兩種方法的完整 C# 範例,探討 WordCompareOptions 類別及其屬性,並討論何時使用哪種模式較為合適。
前置條件
在開始之前,請確保:
- .NET 6.0 或更新版本。
- GroupDocs.Comparison for .NET — 透過 NuGet 安裝:
dotnet add package GroupDocs.Comparison
- 一份 授權檔(
GroupDocs.Comparison.lic)。若未提供授權,函式庫會以評估模式執行,並附加浮水印與頁面尺寸限制。您可以申請一個臨時授權來測試。 - 兩個要比較的 Word 檔案──我們將其稱為
source.docx與target.docx。範例內容如下:
source.docx |
target.docx |
|---|
方法 1:修訂(追蹤變更)比較
使用時機:審閱者需要在 Microsoft Word 中使用內建的 Review → Accept / Reject 工具,逐一接受或拒絕變更──例如在合約談判或政策審批週期中。
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
var options = new WordCompareOptions
{
DetectStyleChanges = true,
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
};
comparer.Compare("result_revision.docx", options);
}
修訂(追蹤變更)模式產生的文件:
底層發生的事情:
ComparisonDisplayMode.Revisions告訴引擎輸出原生的 Word 追蹤變更標記。DetectStyleChanges = true讓比較同時偵測格式差異(粗體、字型大小、顏色)以及文字編輯。- 輸出檔案在 Microsoft Word 中開啟時,會自動顯示 Review 功能窗格──每一筆插入、刪除與樣式調整都會列出,並可接受或拒絕。
由於修訂模式僅附加修訂資訊,而不需重新渲染文件內容,通常是兩種模式中較快的一種。
方法 2:強調模式比較
使用時機:利害關係人希望得到一份乾淨的文件,能清楚顯示變更但不需要逐筆審閱。典型情境是經理在 Word 中打開最新版本,快速瀏覽被標示的插入與刪除,以了解更新的影響。
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
var options = new WordCompareOptions
{
DetectStyleChanges = true,
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
};
comparer.Compare("result_highlighted.docx", options);
}
強調模式產生的文件:
底層發生的事情:
ComparisonDisplayMode.Highlight將差異以行內顏色標示——刪除為紅色、插入為綠色、樣式變更為藍色(這些預設色彩可透過WordCompareOptions/CompareOptions以及其相關的StyleSettings進行調整)。- 文件可直接閱讀或列印,無需額外步驟。
- 檔案中不會加入追蹤變更的註記。
強調模式在內部需要執行更多工作,因為它必須實際修改文件內容並套用格式。對於大型檔案,您可能會注意到與修訂模式相比,效能差異相當明顯。
探索 WordCompareOptions
上述兩個範例皆使用 WordCompareOptions──此類別繼承自 CompareOptions 的共用設定,並加入針對 Word 文件的專屬屬性。透過此類別,您可以控制顯示模式 (DisplayMode)、是否偵測樣式變更 (DetectStyleChanges)、修訂作者名稱 (RevisionAuthorName)、以及是否比較換行、書籤等。
此外,基礎的 CompareOptions 亦提供插入、刪除與變更項目的樣式設定(InsertedItemStyle、DeletedItemStyle、ChangedItemStyle),讓您在需要時微調高亮的顏色與格式。
以下是一段在修訂模式下僅檢查純文字的選項設定範例:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
以程式方式取得變更清單
無論您選擇修訂或強調模式,都可以透過通用的 Comparer.GetChanges API 取得結構化的差異清單。此方法適用於 Word 以及所有其他受支援的格式。
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
comparer.Compare("result_revision.docx");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
}
當您需要在自訂工作流程中後處理變更時,這非常有用──例如生成自訂的 HTML 報告、將差異輸入審閱系統,或彙總編輯統計資訊。更多細節請參考官方 API 文件:Comparer.GetChanges。
處理受密碼保護的文件
即使文件受到密碼保護,也仍然可以比較:在建立 Comparer 時透過 LoadOptions 傳入密碼。此方式對 Word、PDF 以及其他受支援格式皆同樣適用。
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source_protected.docx",
new LoadOptions { Password = "secret" }))
{
comparer.Add("target_protected.docx");
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
};
comparer.Compare("result_protected.docx", options);
}
取得免費試用
您可以從官方發行頁面下載 GroupDocs.Comparison for .NET。若想進行無限制測試,請申請臨時授權──無需信用卡。
常見問與答
Q: 伺服器上需要安裝 Microsoft Word 或 Office 嗎?
A: 不需要。GroupDocs.Comparison 是一個獨立的 .NET 函式庫,能自行讀寫 DOCX 檔案。
Q: 除了 Word,我可以比較其他格式的文件嗎?
A: 可以──函式庫支援 PDF、Excel 工作表、簡報、純文字檔等多種格式,完整列表請見文件說明。
Q: 如果未設定授權會發生什麼事?
A: 函式庫會以評估模式運作。輸出文件會帶有浮水印,且僅處理前幾頁。申請臨時授權即可在測試期間解除這些限制。
Q: 我可以自行調整高亮顏色嗎?
A: 預設顏色已能滿足大多數需求。若需進階樣式控制,請查閱 CompareOptions 中的 StyleSettings 屬性。
結論
GroupDocs.Comparison for .NET 為您提供了兩種從程式碼比較 Word 文件的便利方式。修訂模式可直接嵌入您團隊已有的審閱工作流程;強調模式則為只想快速瞭解變更的使用者提供即時的視覺摘要。WordCompareOptions 類別讓您得以微調輸出──從樣式偵測、作者標記到書籤與文件屬性比較皆可自訂。
依據您的情境選擇最適合的模式,或同時產生兩種結果,讓不同受眾自行決定偏好的檢視方式。