我正在使用 OpenXML SDK 以编程方式将一些<w:sdt/>
元素替换为 OpenXML (WordProcessingML) 标记块。
例如,我有一个包含这些内容的段落:
<w:p>
<w:run><w:text> Text before </w:text></w:run>
<w:sdt><w:sdtPr> ...</w:sdtPr><w:sdtContent>...</w:sdtContent></w:sdt>
<w:run><w:text> Text after </w:text></w:run>
</w:p>
还有一个结构如下的表:
<w:tbl>
<w:tblPr>...</w:tblPr>
<w:tblGrid> ... gridCol elements ...</w:tblGrid>
<w:tr>
<w:trPr>...</w:trPr>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
</w:tr>
</w:tbl>
基本上我想<w:sdt/>
用表格标记替换段落中的元素。问题是我不能仅仅替换它,因为它会创建一个无效的文档(在另一个段落元素中包含段落的表格是无效的)。
我想要得到的结果是这样的:
<w:p>
<w:run><w:text> Text before </w:text></w:run>
</w:p>
<w:tbl>
<w:tblPr>...</w:tblPr>
<w:tblGrid> ... gridCol elements ...</w:tblGrid>
<w:tr>
<w:trPr>...</w:trPr>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
</w:tr>
</w:tbl>
<w:p>
<w:run><w:text> Text after </w:text></w:run>
</w:p>
我正在考虑创建一种方法,该方法使用元素之前的<w:sdt/>
元素创建一个新段落,另一个使用 sdt 元素之后的元素创建一个新段落,但似乎这样的方法容易出错。
有没有一种方法可以做我想做的事而无需手动操作(当我尝试在文本行中插入新表格时,Word 会做这种方法)?
任何帮助将不胜感激。