Aspose.Words for .NET使用文档教程(4):如何比较两个Word文档
Aspose.Words For .Net是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件格式,并允许将Word文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
【下载Aspose.Words for .NET最新试用版】
如何比较两个word文档
我们可以使用Document.Compare方法比较两个文档以查看它们之间的区别。此方法模仿Microsoft Word的比较功能,并生成文档差异作为许多编辑和格式修订。主要的想法是,如果我们拒绝所有修订,那么我们得到的文件与原始文件相同。相反,如果我们接受所有修订,那么我们将获得最终(比较目标)文档。
限制
在这里,有一些普遍的限制:
- 在调用此方法之前,正在比较的文档必须没有修订。
- 标记——仅限于SmartTag,其他标记完全被忽略。
- 比较回退形状,而不是实际的Dml比较。
有一条关于“相等”的重要说明:实际上,“相等”在这里的意思是比较法不能将更改表示为修订。一般来说,这意味着文档文本和文本格式是相同的。但是文档之间可能还有其他不同之处。例如,Word只支持样式的格式修改,我们不能表示样式的插入/删除。因此文档可以有不同的样式集,而Compare方法仍然不会产生修订。
下面的示例显示了正常的比较用例:
// For complete examples and data files, please go to //github.com/aspose-words/Aspose.Words-for-.NET Document docA = new Document(dataDir + "TestFile.doc"); Document docB = new Document(dataDir + "TestFile - Copy.doc"); // DocA now contains changes as revisions. docA.Compare(docB, "user", DateTime.Now);
下面的例子展示了如何测试Word文档是否“相等”:
// For complete examples and data files, please go to //github.com/aspose-words/Aspose.Words-for-.NET Document docA = new Document(dataDir + "TestFile.doc"); Document docB = new Document(dataDir + "TestFile - Copy.doc"); // DocA now contains changes as revisions. docA.Compare(docB, "user", DateTime.Now); if (docA.Revisions.Count == 0) Console.WriteLine("Documents are equal"); else Console.WriteLine("Documents are not equal");
比较Word文档并忽略文档格式
在比较文档时,可以忽略文档格式、页眉-页脚、字段、脚注、表、文本框、注释和大小写更改。设置CompareOptions的值。属性IgnoreFormatting设置为true,以忽略文档格式设置。当CompareOptions时,页眉和页脚内容将被忽略。IgnoreHeadersAndFooters被设置为true。下面的代码示例显示了如何忽略文档的格式化和页眉页脚内容:
// For complete examples and data files, please go to //github.com/aspose-words/Aspose.Words-for-.NET Document docA = new Document(dataDir + "TestFile.doc"); Document docB = new Document(dataDir + "TestFile - Copy.doc"); CompareOptions options = new CompareOptions(); options.IgnoreFormatting = true; options.IgnoreHeadersAndFooters = true; options.IgnoreCaseChanges = true; options.IgnoreTables = true; options.IgnoreFields = true; options.IgnoreComments = true; options.IgnoreTextboxes = true; options.IgnoreFootnotes = true; // DocA now contains changes as revisions. docA.Compare(docB, "user", DateTime.Now, options); if (docA.Revisions.Count == 0) Console.WriteLine("Documents are equal"); else Console.WriteLine("Documents are not equal");
设置比较差异的目标文档
在“比较文档”对话框中,MS Word有“显示更改”选项,比较结果取决于此选项。Target属性用于此目的。此属性指定比较期间将哪个文档应使用作为目标。例如,这个选项和IgnoreFormatting设置一起决定了必须使用哪个文档作为相等文本范围的格式化源。ComparisonTargetType枚举用于指定将在比较期间使用的基本文档。下面的代码示例展示了如何为两个文档的比较设置目标文档:
// For complete examples and data files, please go to //github.com/aspose-words/Aspose.Words-for-.NET Document docA = new Document(dataDir + "TestFile.doc"); Document docB = new Document(dataDir + "TestFile - Copy.doc"); CompareOptions options = new CompareOptions(); options.IgnoreFormatting = true; // Relates to Microsoft Word "Show changes in" option in "Compare Documents" dialog box. options.Target = ComparisonTargetType.New; docA.Compare(docB, "user", DateTime.Now, options);
现在购买正版授权,您可有福咯!6月1日-6月30日订购Aspose.Words系列产品,最高立减30000元!>>立即进入抢购通道