所需Python库:Spire.Doc for Python。该Python Word库支持几乎所有的Word文档元素,可以在Word中实现创建、操作表格等。
可以通过pip进行安装:
1 |
pip install Spire.Doc |
Spire.Doc for Python 提供了两种不同的方法,支持在Word表格中间指定位置处插入新行,或者在表格末尾添加新行。用到的主要方法如下:
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
from spire.doc import * from spire.doc.common import *
# 加载Word文档 document = Document() document.LoadFromFile("Word表格.docx")
# 获取第一节 section = document.Sections[0]
# 获取该节中第一个表格 table = section.Tables[0] if isinstance(section.Tables[0], Table) else None
# 插入一行作为第四行 table.Rows.Insert(3, table.AddRow())
# 在表格末尾添加一行 addedRow = table.AddRow()
# 保存文件 document.SaveToFile("插入行.docx", FileFormat.Docx2016) document.Close() |
生成文件如图:
与插入行不同,插入列没有可以直接调用的方法。为了实现插入列的效果,我们可以在每一行中的指定位置插入单元格来添加新列。具体操作如下:
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
from spire.doc import * from spire.doc.common import *
# 加载Word文档 document = Document() document.LoadFromFile("Word表格.docx")
# 获取第一节 section = document.Sections[0]
# 获取该节中的第一个表格 table = section.Tables[0] if isinstance(section.Tables[0], Table) else None
# 遍历表格的每一行 for i in range(table.Rows.Count): # 获取当前行 row = table.Rows[i]
# 在当前行的第三个位置处插入一个单元格 cell = TableCell(document) row.Cells.Insert(2, cell)
# 设置新单元格的宽度 row.Cells[2].SetCellWidth(40, CellWidthType.Point)
# 在当前行的末尾添加一个新的单元格 cell = row.AddCell()
# 设置新单元格的宽度与第二列相同 cell.Width = row.Cells[1].Width
# 保存文件 document.SaveToFile("插入列.docx", FileFormat.Docx2016) document.Close() |
生成文件如图:
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from spire.doc import * from spire.doc.common import *
# 加载Word文档 document = Document() document.LoadFromFile("Word表格.docx")
# 获取第一节 section = document.Sections[0]
# 获取该节中第一个表格 table = section.Tables[0] if isinstance(section.Tables[0], Table) else None
# 删除第二行 table.Rows.RemoveAt(1)
# 遍历表格中每一行 for i in range(table.Rows.Count): # 删除每一行中的第3个单元格 row = table.Rows[i] row.Cells.RemoveAt(2)
# 保存文档 document.SaveToFile("删除行和列.docx", FileFormat.Docx2016) document.Close() |
生成文件如图 (原表格为4x6):