程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Aspose.Words:如何添加另一個WORD文檔中的Node對象,aspose.wordsnode

Aspose.Words:如何添加另一個WORD文檔中的Node對象,aspose.wordsnode

編輯:C#入門知識

Aspose.Words:如何添加另一個WORD文檔中的Node對象,aspose.wordsnode


首先看一段代碼,這段代碼意圖從docSource中獲取第一個表格,並插入docTarget的末尾:

1 var table = (Table)docSource.GetChild(NodeType.Table, 0, true);
2 docTarget.FirstSection.Body.ChildNodes.Add(table);

這段代碼會拋出異常:“The newChild was created from a different document than the one that created this node.”,這是什麼原因呢?

原因是,對於Aspose.Words的Node對象,它的一系列樣式和格式的控制,取決於它所在的DocumentBase父對象,這也是很多Aspose.Words對象聲明時,必須指定它的DocumentBase參數,比如聲明一個Table,應該如下:

1 Document doc=new Document();
2 Table table=new Table(doc);

那麼,我們有沒有辦法添加另一個文檔中的對象呢?有,必須通過Document.ImportNode方法或者使用NodeImporter對象。

這兩種方法思路都是將源文檔中的Node導入到目標文檔中,再追加Node到合適的位置。

Document.ImportNode
 1 /// <summary>
 2 /// A manual implementation of the Document.AppendDocument function which shows the general 
 3 /// steps of how a document is appended to another.
 4 /// </summary>
 5 /// <param name="dstDoc">The destination document where to append to.</param>
 6 /// <param name="srcDoc">The source document.</param>
 7 /// <param name="mode">The import mode to use when importing content from another document.</param>
 8 public void AppendDocument(Document dstDoc, Document srcDoc, ImportFormatMode mode)
 9 {
10     // Loop through all sections in the source document. 
11     // Section nodes are immediate children of the Document node so we can just enumerate the Document.
12     foreach (Section srcSection in srcDoc)
13     {
14         // Because we are copying a section from one document to another, 
15         // it is required to import the Section node into the destination document.
16         // This adjusts any document-specific references to styles, lists, etc.
17         //
18         // Importing a node creates a copy of the original node, but the copy
19         // is ready to be inserted into the destination document.
20         Node dstSection = dstDoc.ImportNode(srcSection, true, mode);
21 
22         // Now the new section node can be appended to the destination document.
23         dstDoc.AppendChild(dstSection);
24     }
25 }
NodeImporter
 1 public static Document GenerateDocument(Document srcDoc, ArrayList nodes)
 2         {
 3             // Create a blank document.
 4             Document dstDoc = new Document();
 5             // Remove the first paragraph from the empty document.
 6             dstDoc.FirstSection.Body.RemoveAllChildren();
 7 
 8             // Import each node from the list into the new document. Keep the original formatting of the node.
 9             NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);
10 
11             foreach (Node node in nodes)
12             {
13                 Node importNode = importer.ImportNode(node, true);
14                 dstDoc.FirstSection.Body.AppendChild(importNode);
15             }
16 
17             // Return the generated document.
18             return dstDoc;
19         }

 

參考文檔:

http://www.aspose.com/docs/display/wordsnet/Aspose.Words.DocumentBase.ImportNode+Overload_1


asposewords 是否支持Word文檔在線進行編輯?

不懂
 

問怎用 Asposewords 給word文檔添加頁眉頁腳(c#net)

看看這個鏈接,有你需要的內容:

blog.csdn.net/...164947
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved