2015-11-30 82 views
0

我有一個要求在Word文檔中插入2個表。我正在使用OpenXML API。當我嘗試插入第二個表時,它給了我一個錯誤 - Cannot insert the OpenXmlElement 「newChild」 because it is part of a tree使用OpenXML在Word文檔中動態插入2個表

下面是我的代碼:

if (fieldname.Trim().Equals("Table")) 
{ 
    if (!checkCount) 
    { 
     var tabRun = new Run(table); 
     var anc = field.Ancestors<Paragraph>().FirstOrDefault(); 
     anc.RemoveAllChildren(); 
     anc.Append(tabRun); 
    } 
    else 
    { 
     var tabRun = table; 
     var anc = field.Ancestors<Paragraph>().FirstOrDefault(); 
     anc.RemoveAllChildren(); 
     anc.Append(tabRun); 
    } 
} 

這裏的標誌checkCount將是真實的,當代碼將執行第二次。 fieldname引用將由表替換的合併字段。

我無法弄清楚這個問題的原因。

回答

0

如前面提到的herehere,您需要預先克隆要插入的節點來處理問題。發生此錯誤的原因是您正在嘗試添加不是新創建的節點,而是已經是樹的一部分。

+0

不幸的是,這不適合我! – Mancy

+0

您是否在循環的每次迭代中創建並分配了'table'變量?如果不是,你的else語句(失敗代碼的一部分)必須創建一個新的'table'節點,這個節點以前沒有添加到文檔中。 – DanL

相關問題