2012-03-02 23 views
0

我使用OpenXML SDK與Word來生成標籤。基本的Word文檔有一個頁面,一個表格,兩行和兩個單元格,其中每個單元格代表一個標籤。我的計劃是根據需要根據SQL結果集的大小添加頁面。該頁面的追加工作,但正文中的表的數量不會改變。有沒有辦法刷新Element數組?我想我可以得到結果集的大小並附加所需數量的頁面,然後關閉並重新打開文檔,但我猜我缺少一些簡單的東西。OpenXML表副本給出了OpenXmlUnknownElement

報告了錯誤的問題抱歉,文檔在Word中看起來正確,但在生產力工具中看起來不正確。我更新了代碼以顯示我的最新嘗試。 iTest現在報告正確的表格數量,但在生產力工具中,添加的表格被標記爲OpenXmlUnknownElement

for (int i = 0; i < pages; ++i) 
{ 
    Table table = new Table(doc.MainDocumentPart.Document.Body.Elements<Table>().First().CloneNode(true)); 
    doc.MainDocumentPart.Document.Body.Append(table); 
} 
int iTest = doc.MainDocumentPart.Document.Body.Elements<Table>().Count(); 

XML顯示有額外產生<w:tbl>

<w:tbl xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:tbl> 
    <w:tblPr> 
     <w:tblStyle w:val="TableGrid" /> 

所以,真正的問題是,如何與OpenXML的SDK複製和粘貼表?

回答

0

new和CloneNode是多餘的,InsertAfter也不是必須的,但將表保存在一起。由於我沒有更新標籤,直到後來插入First()後用於我的目的。

for (int i = 0; i < pages; ++i) 
{ 
    doc.MainDocumentPart.Document.Body.InsertAfter(doc.MainDocumentPart.Document.Body.Elements<Table>().First().CloneNode(true), MDP.Document.Body.Elements<Table>().First()); 
} 
0

嘗試Descendants<Table>而不是Elements<Table>

同時發佈您的身體的XML,所以我們可以更好地幫助您。