介绍
无论你是处理合同、内部政策、技术规格还是营销文案,模式都是一样的:你会很快积累多个 .docx 版本,随后需要查看它们之间到底有什么变化。Word 自带的 Compare 对话框对偶尔的手动检查还算够用,但在比较成为常规流程的一部分或需要在服务器端自动化时,它帮不上太大忙。
GroupDocs.Comparison for .NET 让你可以通过代码运行比较,并以审阅者喜欢的格式生成结果。该库为 Word 文档提供了两种输出比较模式:
- Revision mode — 将差异写入 Word 修订(track‑changes)标记。审阅者打开文件后,会看到熟悉的 Review → Accept / Reject 控件,并逐项处理更改。
- 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.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);
}
生成的文档(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):
内部实现原理:
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 类让你可以对输出进行细致调控——从样式检测、作者归属到书签及文档属性比较。
根据实际场景选择合适的模式,或者同时生成两种结果,让不同的受众自行决定使用哪种视图。