我正在使用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/GT;
包含表标记的段落中的元素。
问题是,我不能仅仅替换它,因为它将创建一个无效的文档(在另一个段落元素中包含段落的表无效)。
我想得到的结果是:
<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/GT;
元素,另一个元素在sdt元素之后,但这样的方法似乎很容易出错。
是否有一个方法可以不必手动地执行我想要的操作(当我尝试在文本行中插入新表时,该方法执行Word的操作)?
任何帮助都将不胜感激。