Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms word 使用OpenXML在word文档中动态插入2个表_Ms Word_Openxml - Fatal编程技术网

Ms word 使用OpenXML在word文档中动态插入2个表

Ms word 使用OpenXML在word文档中动态插入2个表,ms-word,openxml,Ms Word,Openxml,我需要在word文档中插入2个表。我使用的是OpenXMLAPI。当我尝试插入第二个表时,它会给我一个错误-无法插入OpenXmlElement“newChild”,因为它是树的一部分 以下是我的代码: if (fieldname.Trim().Equals("Table")) { if (!checkCount) { var tabRun = new Run(table); var anc = field.Ancestors<Parag

我需要在word文档中插入2个表。我使用的是OpenXMLAPI。当我尝试插入第二个表时,它会给我一个错误-
无法插入OpenXmlElement“newChild”,因为它是树的一部分

以下是我的代码:

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);
     }
}
if(fieldname.Trim().Equals(“表”))
{
如果(!检查计数)
{
var tabRun=新运行(表);
var anc=field.concenters().FirstOrDefault();
移除所有儿童();
附加(tabRun);
}
其他的
{
var tabRun=表格;
var anc=field.concenters().FirstOrDefault();
移除所有儿童();
附加(tabRun);
}
}
这里,当代码第二次执行时,标志
checkCount
将为真<代码>字段名
指将由表替换的合并字段


我无法找出此问题的原因。

如前所述,您需要克隆节点以提前插入以处理此问题。出现此错误是因为您试图添加的节点不是新创建的,而是树的一部分。

是否在循环的每次迭代中创建并分配
变量?否则,else语句(代码中失败的部分)必须创建一个新的
节点,该节点之前没有添加到文档中。