文字处理文档是起草合同、协议、文件和许多其他官方文件的最常用方式。如果您需要比较和合并两个 Word 文档,就像 Microsoft Word 的跟踪更改选项一样,我们可以在 .NET 应用程序中以编程方式完成。在本文中,我们将讨论如何比较两个 Word 文档并使用 C# 突出显示已识别的差异。此外,我们将了解如何比较受密码保护的文档、接受和拒绝更改,以及将两个以上的文档与 C# 示例进行比较。
此处讨论了以下主题:
.NET API 来比较 Word 文档
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 文档并突出显示差异的步骤。
以下 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。
- 对于每个更改,您可以选择 Accept 或 Reject。
- 完成更改后,调用 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 文档的差异并突出显示已识别更改的步骤。
以下 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# 比较受密码保护的文档的内容。
以下 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。访问它的文档,开始为各种支持的文档格式构建您自己的文档比较应用程序。如有疑问,请通过 论坛 联系我们。