使用python docx替换Word doc中的现有表

时间:2019-12-16 17:24:53

标签: python python-docx

我有一个包含以下表格的Word文档:

doc = Document('doc_generator.docx')
print(doc.tables)

[docx.table.Table对象位于0x0000017E8B2A0D68,docx.table.Table对象位于0x0000017E8B2A0198]

,我正在尝试用新表替换现有表之一。 我所做的是:

doc.tables[0] = new_table

new_table是实际的Word docx表,即正在运行:

type(new_table)

返回:

docx.table.Table

如果我随后尝试通过以下方式保存更新的文档:

doc.save('Updated.docx')

该表仍未更新。如果相反,我例如运行命令:

doc.tables[0].add_row()

该表实际上是在Word文档中更新的。看来问题出在我的作业陈述上。任何想法如何解决这个问题?我确实想通过python-docx 替换,而不是编辑或更新具有新表的现有表。预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以将.replace方法用于父xml对象:

doc.element.body.replace(old_table._element, new_table._element)

其中“ old_table”和“ new_table”都是docx.table.Table对象。 ._element属性用于访问文档的xml结构中的表格对象。

如果doc.element.body不是表的父元素,则可以使用以下命令找到父元素:

old_table._element.getparent()