我有一个包含以下表格的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 替换,而不是编辑或更新具有新表的现有表。预先感谢。
答案 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()