Word 无法打开 table 的 DOCX 文件

Word cannot open DOCX file with a table

我正在尝试 运行 使用 Open XML API 对 DOCX 文件进行邮件合并 - 只需将 <w:t> 元素替换为 table(见下文)。即使是使用以下代码创建的最简单的 table 也会导致 Word 在打开文件时出错。

如果我去掉该行(这样我就只有 <w:tbl> / <w:tblGrid> / <w:GridCol>)。没有错误,但是我当然没有任何数据。

有人能看出我做错了什么吗?

Table table = new Table(new TableGrid(new GridColumn() { Width = "2000"}),
                        new TableRow(new TableCell(new Paragraph(new Run(new Text("test")))))
                                      );
TextNode.Parent.ReplaceChild<Text>(table, TextNode);

您不能将 <w:t> 替换为 <w:tbl>。 table 是一个块级元素,因此您可以将它放在段落 () 所在的相同位置。

换句话说,您可以将其作为以下元素之一的子元素放置:body、comment、customXml、docPartBody、endnote、footnote、ftr、hdr、sdtContent、tc 和 txbxContent。

所以,尝试这样的事情:

// TextNode (Text) -> Parent (Run) -> Parent (Paragraph)
var paragraph = TextNode.Parent.Parent as Paragraph;
paragraph.Parent.ReplaceChild(table, paragraph);

编辑:

如果父元素是<w:tc>,则应在其末尾添加一个空段落:

// TextNode (Text) -> Parent (Run) -> Parent (Paragraph)
var paragraph = TextNode.Parent.Parent as Paragraph;

var parent = paragraph.Parent;
parent.ReplaceChild(table, paragraph);

if (parent is TableCell)
    parent.InsertAfter(new Paragraph(), table);