Aspose.Words for .NET使用文檔教程(4):如何比較兩個(gè)Word文檔
Aspose.Words For .Net是一種高級Word文檔處理API,用于執(zhí)行各種文檔管理和操作任務(wù)。API支持生成,修改,轉(zhuǎn)換,呈現(xiàn)和打印文檔,而無需在跨平臺應(yīng)用程序中直接使用Microsoft Word。此外,API支持所有流行的Word處理文件格式,并允許將Word文檔導(dǎo)出或轉(zhuǎn)換為固定布局文件格式和最常用的圖像/多媒體格式。
【下載Aspose.Words for .NET最新試用版】
如何比較兩個(gè)word文檔
我們可以使用Document.Compare方法比較兩個(gè)文檔以查看它們之間的區(qū)別。此方法模仿Microsoft Word的比較功能,并生成文檔差異作為許多編輯和格式修訂。主要的想法是,如果我們拒絕所有修訂,那么我們得到的文件與原始文件相同。相反,如果我們接受所有修訂,那么我們將獲得最終(比較目標(biāo))文檔。
限制
在這里,有一些普遍的限制:
- 在調(diào)用此方法之前,正在比較的文檔必須沒有修訂。
- 標(biāo)記——僅限于SmartTag,其他標(biāo)記完全被忽略。
- 比較回退形狀,而不是實(shí)際的Dml比較。
有一條關(guān)于“相等”的重要說明:實(shí)際上,“相等”在這里的意思是比較法不能將更改表示為修訂。一般來說,這意味著文檔文本和文本格式是相同的。但是文檔之間可能還有其他不同之處。例如,Word只支持樣式的格式修改,我們不能表示樣式的插入/刪除。因此文檔可以有不同的樣式集,而Compare方法仍然不會產(chǎn)生修訂。
下面的示例顯示了正常的比較用例:
// For complete examples and data files, please go to https://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 https://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文檔并忽略文檔格式
在比較文檔時(shí),可以忽略文檔格式、頁眉-頁腳、字段、腳注、表、文本框、注釋和大小寫更改。設(shè)置CompareOptions的值。屬性IgnoreFormatting設(shè)置為true,以忽略文檔格式設(shè)置。當(dāng)CompareOptions時(shí),頁眉和頁腳內(nèi)容將被忽略。IgnoreHeadersAndFooters被設(shè)置為true。下面的代碼示例顯示了如何忽略文檔的格式化和頁眉頁腳內(nèi)容:
// For complete examples and data files, please go to https://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");
設(shè)置比較差異的目標(biāo)文檔
在“比較文檔”對話框中,MS Word有“顯示更改”選項(xiàng),比較結(jié)果取決于此選項(xiàng)。Target屬性用于此目的。此屬性指定比較期間將哪個(gè)文檔應(yīng)使用作為目標(biāo)。例如,這個(gè)選項(xiàng)和IgnoreFormatting設(shè)置一起決定了必須使用哪個(gè)文檔作為相等文本范圍的格式化源。ComparisonTargetType枚舉用于指定將在比較期間使用的基本文檔。下面的代碼示例展示了如何為兩個(gè)文檔的比較設(shè)置目標(biāo)文檔:
// For complete examples and data files, please go to https://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);
現(xiàn)在購買正版授權(quán),您可有???!6月1日-6月30日訂購Aspose.Words系列產(chǎn)品,最高立減30000元!>>立即進(jìn)入搶購?fù)ǖ?/strong>