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

问题描述 投票:0回答:1

我有一个带下表的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 replace,而不是编辑或更新具有新表的现有表。预先感谢。

python python-docx
1个回答
0
投票

您可以对父XML对象使用.replace方法:

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()
© www.soinside.com 2019 - 2024. All rights reserved.