![](/img/trans.png)
[英]How to open / decrypt a password protected word-file (docx) with PHP
[英]Word cannot open DOCX file with a table
我正在嘗試使用 Open XML API 對 DOCX 文件運行郵件合並 - 只需用表格替換<w:t>
元素(見下文)。 即使是使用以下代碼創建的最簡單的表格也會在打開文件時導致 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>
。 表格是一個塊級元素,因此您可以將其放置在您擁有段落 (<w:p>) 的相同位置。
換句話說,您可以將其作為以下之一的子元素放置: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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.