OpenXML表副本提供OpenXmlUnknownElement
本文关键字:OpenXmlUnknownElement 副本 OpenXML | 更新日期: 2023-09-27 18:26:23
我正在使用OpenXML SDK和Word来生成标签。基本Word文档有一个页面,其中包含一个表、两行和两个单元格,每个单元格代表一个标签。我的计划是根据SQL结果集的大小根据需要添加页面。页面的追加可以工作,但正文中的表数不会改变。有没有刷新Element数组的方法?我想我可以得到结果集的大小,并附加所需的页数,然后关闭并重新打开文档,但我猜我错过了一些简单的东西。
报告了错误的问题抱歉,文档在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" />
因此,真正的问题是,如何使用OpenXMLSDK复制和粘贴表?
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());
}
尝试Descendants<Table>
而不是Elements<Table>
。
同时发布您身体的XML,这样我们可以更好地帮助您。