介绍

无论您处理的是合同、内部政策、技术规范还是营销文案,模式都是相同的:您会快速累积多个 .docx 版本,某个时刻需要查看它们之间到底有什么变化。Word 自带的 Compare 对话框适合偶尔手动检查,但在比较成为常规流程或需要在服务器端自动化时帮助不大。

GroupDocs.Comparison for .NET 让您可以在代码中运行比较,并以审阅者喜欢的格式生成结果。该库支持 Word 文档的两种输出模式:

  1. 修订模式 — 将差异写入 Word 修订(Track Changes)标记。审阅者打开文件,看到熟悉的 审阅 → 接受 / 拒绝 控件,并逐一处理更改。
  2. 高亮模式 — 插入、删除和修改的文本直接在文档正文中使用颜色高亮显示,阅读最终文本时一眼即可看出差异。

本文将通过可运行的 C# 示例逐步演示这两种方法,探讨 WordCompareOptions 类及其属性,并讨论何时使用哪种模式更合适。

前置条件

开始之前:

  • .NET 6.0 或更高版本。
  • GroupDocs.Comparison for .NET — 通过 NuGet 安装:
dotnet add package GroupDocs.Comparison
  • 一个 许可证文件GroupDocs.Comparison.lic)。如果没有许可证,库将以评估模式运行,带有水印和页数限制。您可以请求一个用于测试的 临时许可证
  • 两个待比较的 Word 文件——我们将其称为 source.docxtarget.docx。示例内容:
source.docx target.docx

方法 1:修订(Track Changes)比较

何时使用: 审阅者需要在 Microsoft 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.Revisions
    };

    comparer.Compare("result_revision.docx", options);
}

修订(track changes)模式 下的生成文档:

修订(track changes)模式的比较结果

内部工作原理:

  • ComparisonDisplayMode.Revisions 告诉引擎输出原生 Word 修订标记。
  • DetectStyleChanges = true 使比较能够捕捉格式差异(粗体、字号、颜色)以及文本编辑。
  • 输出文件在 Microsoft Word 中打开时会自动显示 审阅 面板——每一次插入、删除和样式微调都会列出,用户可以接受或拒绝。

由于修订模式仅是附加修订元数据,而不需要重新渲染文档内容,它通常是两种模式中速度更快的。


方法 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 还暴露了插入、删除和更改项的样式属性(InsertedItemStyleDeletedItemStyleChangedItemStyle),以便在需要时微调高亮的颜色和格式。

下面是一个仅针对文本进行检查的修订模式配置示例:

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。若想进行无限制测试,可请求一个 临时许可证——无需信用卡。


常见问答

问:服务器上是否需要安装 Microsoft Word 或 Office?
答:不需要。GroupDocs.Comparison 是一个独立的 .NET 库,能够自行读取和写入 DOCX 文件。

问:除了 Word,我还能比较其他格式吗?
答:可以——库支持 PDF、Excel、PowerPoint、纯文本等多种格式。完整列表请参见 文档

问:如果不设置许可证会怎样?
答:库会以评估模式运行。输出文档会带有水印,仅处理前几页。申请 临时许可证 可在测试期间解除这些限制。

问:我可以自定义高亮颜色吗?
答:默认颜色已满足大多数需求。如需高级样式控制,请查看 CompareOptions 上的 StyleSettings 属性。


结论

GroupDocs.Comparison for .NET 为您提供了两种从代码中对 Word 文档进行差异比较的简洁方案。修订模式直接融入团队已有的审阅工作流;高亮模式则为只需快速了解更改的用户提供即时的视觉摘要。WordCompareOptions 类让您可以细粒度地调节输出——从样式检测、作者标注到书签及文档属性比较。

根据实际场景选择最适合的模式,或同时生成两种结果,让不同受众自行决定使用哪种视图。

其他资源