介绍

无论你是处理合同、内部政策、技术规格还是营销文案,模式都是一样的:你会很快积累多个 .docx 版本,随后需要查看它们之间到底有什么变化。Word 自带的 Compare 对话框对偶尔的手动检查还算够用,但在比较成为常规流程的一部分或需要在服务器端自动化时,它帮不上太大忙。

GroupDocs.Comparison for .NET 让你可以通过代码运行比较,并以审阅者喜欢的格式生成结果。该库为 Word 文档提供了两种输出比较模式:

  1. Revision mode — 将差异写入 Word 修订(track‑changes)标记。审阅者打开文件后,会看到熟悉的 Review → Accept / Reject 控件,并逐项处理更改。
  2. Highlight mode — 将插入、删除和修改的文本直接在文档正文中以颜色高亮显示,阅读最终文本时即可一眼看出差异。

本文将通过可运行的 C# 示例分别演示这两种方式,深入了解 WordCompareOptions 类及其属性,并讨论何时使用哪种模式更合适。

前置条件

开始之前:

  • .NET 6.0 或更高版本。
  • GroupDocs.Comparison for .NET — 通过 NuGet 安装:
dotnet add package GroupDocs.Comparison
  • 一个 license file (GroupDocs.Comparison.lic)。如果没有许可证,库会以评估模式运行,带有水印并受页数限制。你可以申请一个用于测试的 temporary license
  • 两个待比较的 Word 文件——我们将其称为 source.docxtarget.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);
}

生成的文档(revision (track changes) mode):

Comparison result in revision (track changes) mode

内部实现原理:

  • 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);
}

生成的文档(highlight mode):

Comparison result in highlight mode

内部实现原理:

  • ComparisonDisplayMode.Highlight 将差异渲染为行内颜色高亮——删除为红色,插入为绿色,样式变化为蓝色(默认颜色可通过 WordCompareOptions/CompareOptions 以及它们的 StyleSettings 调整)。
  • 文档即可直接阅读或打印,无需额外步骤。
  • 文件中不包含修订元数据。

Highlight mode 在内部需要更多工作,因为它必须修改实际的文档内容并应用相应的格式。对于大型文件,你可能会明显感受到与修订模式相比的性能差异。


探索 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);
}

获取免费试用

你可以从 official releases page 下载 GroupDocs.Comparison for .NET。若想进行无限制的测试,请请求一个 temporary license——无需信用卡。


常见问题

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

Q: 除了 Word,我还能比较其他格式的文档吗?
A: 可以——库支持 PDF、Excel 工作表、演示文稿、纯文本文件等多种格式。完整列表请参考 文档

Q: 如果不设置许可证会怎样?
A: 库会以评估模式运行。输出文档会带有水印,并且只能处理前几页。申请 temporary license 可在测试期间移除这些限制。

Q: 我可以自定义高亮颜色吗?
A: 默认颜色已满足大多数使用场景。若需高级样式控制,请查看 CompareOptions 上的 StyleSettings 属性。


结论

GroupDocs.Comparison for .NET 为你提供了两种从代码层面对 Word 文档进行差异比较的简洁方案。修订模式直接融入团队已有的审阅工作流;高亮模式则为只需快速了解改动的人提供了一目了然的视觉摘要。WordCompareOptions 类让你可以对输出进行细致调控——从样式检测、作者归属到书签及文档属性比较。

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

附加资源