在 Word 文档中合并表格可以将多个表格中的数据整合为一个更大的表格,从而更全面地展示信息。而相反,拆分表格则可以将一个大型表格分割为更小、更易于管理的部分,方便专注于特定的数据集。本文将演示如何使用 Spire.Doc for Python 在 Python 中合并和拆分 Word 表格。
安装 Spire.Doc for Python
本教程需要用到 Spire.Doc for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 VS Code 中。
pip install Spire.Doc
在 Python 中合并 Word 中的表格
使用 Spire.Doc for Python,您可以通过将其他表格中的所有行复制到目标表格中,然后删除这些表格,来实现多个表格的合并。以下是具体的操作步骤。
- 创建一个 Document 类的实例。
- 通过 Document.LoadFromFile() 方法加载 Word 文档。
- 利用 Document.Sections[] 属性获取指定的节。
- 使用 Section.Tables[] 属性获取该节中的两个表格。
- 遍历第二个表格的所有行,并且使用 Table.Rows[].Clone() 方法复制这些行。
- 通过 Table.Rows.Add() 方法,将复制的行添加到第一个表格中。
- 利用 Document.SaveToFile() 方法保存结果文档。
- Python
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 类的实例
doc = Document()
# 加载 Word 文档
doc.LoadFromFile("/Word表格.docx")
# 获取第一节
section = doc.Sections[0]
# 获取该节中的第一个和第二个表格
table1 = section.Tables[0] if isinstance(section.Tables[0], Table) else None
table2 = section.Tables[1] if isinstance(section.Tables[1], Table) else None
# 将第二个表格中的行添加到第一个表格中
for i in range(table2.Rows.Count):
table1.Rows.Add(table2.Rows[i].Clone())
# 删除第二个表格
section.Tables.Remove(table2)
# 保存结果文件
section.Document.SaveToFile("/合并表格.docx", FileFormat.Docx2013)
doc.Close()
在 Python 中拆分 Word 中的表格
要将一个表格拆分为两个或多个表格,您需要先创建一个新表格,然后将原表格中指定的行复制到新表格中,最后从原表格中删除这些行。以下是具体的操作步骤。
- 创建一个 Document 类的实例。
- 通过 Document.LoadFromFile() 方法加载一个 Word 文档。
- 利用 Document.Sections[] 属性获取某个特定的节。
- 使用 Section.Tables[] 属性获取该节中的表格。
- 指定表格拆分的位置行索引。
- 创建一个新的 Table 类的实例。
- 遍历原表格中的指定行,通过 Table.Rows[].Clone() 方法复制这些行。
- 利用 Table.Rows.Add() 方法,将指定的行添加到新的表格中。
- 遍历复制的行,并使用 Table.Rows.RemoveAt() 方法将每一行从原表中移除。
- 通过 Section.Tables.Add() 方法将新的表格添加到该节中。
- 使用 Document.SaveToFile() 方法保存结果文档。
- Python
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 实例
doc = Document()
# 加载一个 Word 文档
doc.LoadFromFile("/合并表格.docx")
# 获取第一节
section = doc.Sections[0]
# 获取节中的第一个表格
table = section.Tables[0] if isinstance(section.Tables[0], Table) else None
# 指定从第五行开始拆分
splitIndex = 4
# 新建一个 Table 对象
newTable = Table(section.Document, True)
# 将这些行(第五行到最后一行)添加到新表中
for i in range(splitIndex, table.Rows.Count):
newTable.Rows.Add(table.Rows[i].Clone())
# 从原表格删除这些行
for i in range(table.Rows.Count - 1, splitIndex - 1, -1):
table.Rows.RemoveAt(i)
# 将新的表格添加到该节中
section.Tables.Add(newTable)
# 保存结果文档
section.Document.SaveToFile("/拆分表格.docx", FileFormat.Docx2013)
doc.Close()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。