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元!>>立即進入搶購通道