表格是 Word 文档中的强大工具,可让使用者以结构化的方式组织和呈现信息。它由行和列组成,形成网格状结构。表通常用于各种目的,例如创建计划、比较数据或以整洁有序的格式显示数据。本文将介绍如何使用 Spire.Doc for Python 在 Python 中创建 Word 文档中的表格。
安装 Spire.Doc for Python
本教程需要使用 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Doc for Python
Python 在 Word 文档中创建表格
Spire.Doc for Python 提供了 Section.AddTable() 方法,支持在 Word 文档中创建表格。下面是详细的步骤:
- 创建 Document 类的对象。
- 使用 Document.AddSection() 方法添加一个章节和使用。
- 创建一个 Table 对象。
- 使用 Table.AddRow() 方法向其添加一行。
- 通过 Row.Cells[index] 属性获取行的特定单元格。
- 使用 TableCell.AddParagraph().AppendText() 向单元格添加文本。
- 使用 Section.AddTable() 方法将表格添加到文档中。
- 使用 Document.SaveToFile() 方法保存结果文档。
- Python
from spire.doc import *
from spire.doc.common import *
# 创建文档对象
doc = Document()
# 添加一个节
section = doc.AddSection()
# 创建一个表格对象
table = Table(doc, True)
# 设置表格宽度为100%
table.PreferredWidth = PreferredWidth(WidthType.Percentage, int(100))
# 设置表格边框样式为单线,颜色为黑色
table.TableFormat.Borders.BorderType = BorderStyle.Single
table.TableFormat.Borders.Color = Color.get_Black()
# 添加一行,包含3个单元格
row = table.AddRow(False, 3)
# 设置行高为20.0
row.Height = 20.0
# 获取第一个单元格
cell = row.Cells[0]
# 设置单元格垂直居中对齐
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
# 在单元格中添加段落
paragraph = cell.AddParagraph()
# 设置段落水平居中对齐
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本
paragraph.AppendText("Row 1, Col 1")
# 获取第二个单元格
cell = row.Cells[1]
# 设置单元格垂直居中对齐
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
# 在单元格中添加段落
paragraph = cell.AddParagraph()
# 设置段落水平居中对齐
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本
paragraph.AppendText("Row 1, Col 2")
# 获取第三个单元格
cell = row.Cells[2]
# 设置单元格垂直居中对齐
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
# 在单元格中添加段落
paragraph = cell.AddParagraph()
# 设置段落水平居中对齐
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本
paragraph.AppendText("Row 1, Col 3")
# 添加另一行,包含3个单元格
row = table.AddRow(False, 3)
# 设置行高为20.0
row.Height = 20.0
# 获取第一个单元格
cell = row.Cells[0]
# 设置单元格垂直居中对齐
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
# 在单元格中添加段落
paragraph = cell.AddParagraph()
# 设置段落水平居中对齐
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本
paragraph.AppendText("Row 2, Col 1")
# 获取第二个单元格
cell = row.Cells[1]
# 设置单元格垂直居中对齐
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
# 在单元格中添加段落
paragraph = cell.AddParagraph()
# 设置段落水平居中对齐
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本
paragraph.AppendText("Row 2, Col 2")
# 获取第三个单元格
cell = row.Cells[2]
# 设置单元格垂直居中对齐
cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
# 在单元格中添加段落
paragraph = cell.AddParagraph()
# 设置段落水平居中对齐
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本
paragraph.AppendText("Row 2, Col 3")
# 将表格添加到节中
section.Tables.Add(table)
# 保存文档到指定路径
doc.SaveToFile("output/CreateTable.docx", FileFormat.Docx2013)
# 关闭文档对象
doc.Close()
Python 通过 HTML 字符串创建表格
Spire.Doc for Python 提供了 Paragraph.AppendHTML() 方法,支持在 Word 文档中通过 HTML 字符串创建表格。以下是详细步骤:
- 创建 Document 类的对象。
- 使用 Document.AddSection() 方法向其添加一个部分。
- 指定用于生成表的 HTML 字符串。
- 使用 Section.AddParagraph() 方法添加段落。
- 使用 Paragraph.AppendHTML() 方法将 HTML 表格添加到段落中。
- 使用 Document.SaveToFile() 方法将文档保存到 .docx 文件。
- Python
# 导入 Spire.Doc 库
from spire.doc import *
# 导入 Spire.Doc.Common 库
from spire.doc.common import *
# 创建一个新的文档对象
document = Document()
# 在文档中添加一个节
section = document.AddSection()
# 定义一个 HTML 表格字符串
HTML = "" + "" + "Row 1, Cell 1 " + "Row 1, Cell 2 " + \n " " + "" + "Row 2, Cell 2 " + \n "Row 2, Cell 2 " + " " + "
"
# 在节中添加一个段落
paragraph = section.AddParagraph()
# 将 HTML 表格添加到段落中
paragraph.AppendHTML(HTML)
# 将文档保存为 output/HtmlTable.docx 文件,格式为 Docx2013
document.SaveToFile("output/HtmlTable.docx", FileFormat.Docx2013)
# 关闭文档对象
document.Close()
Python 合并或拆分表格中单元格
使用表格时,合并或拆分单元格的功能提供了一种强大的方法来自定义和格式化数据。此示例说明如何将相邻单元格合并为单个单元格,以及如何使用 Spire.Doc for Python 将单个单元格拆分为多个较小的单元格。下面是详细的步骤:
- 创建 Document 类的对象。
- 使用 Document.AddSection() 方法向其添加一个部分。
- 使用 Section.AddTable() 方法添加一个表。
- 使用 Table.ResetCells() 方法设置表的列号和行号。
- 使用 Table.ApplyHorizontalMerge() 方法水平合并单元格。
- 使用 Table.ApplyVerticalMerge() 方法垂直合并单元格。
- 使用 TableCell.SplitCell() 方法将一个单元格拆分为多个较小的单元格。
- 使用 Document.SaveToFile() 方法将文档保存到 .docx 文件。
- Python
# 导入 Spire.Doc 库
from spire.doc import *
# 导入 Spire.Doc.Common 库
from spire.doc.common import *
# 创建一个新的文档对象
document = Document()
# 在文档中添加一个节
section = document.AddSection()
# 在节中添加一个表格
table = section.AddTable(True)
# 重置表格的单元格数量为 4x4
table.ResetCells(4, 4)
# 设置表格的首选宽度为 100%
table.PreferredWidth = PreferredWidth(WidthType.Percentage, int(100))
# 遍历表格的所有行,设置每行的行高为 20.0
for i in range(0, table.Rows.Count):
table.Rows[i].Height = 20.0
# 合并表格的第 1 行第 1 列到第 3 列的单元格
table.ApplyHorizontalMerge(0, 0, 3)
# 合并表格的第 1 行第 1 列到第 3 列的单元格
table.ApplyVerticalMerge(0, 2, 3)
# 获取表格第 2 行第 4 列的单元格
cell = table.Rows[1].Cells[3]
# 将第 2 行第 4 列的单元格拆分为两个单元格
cell.SplitCell(3, 0)
# 设置表格第 1 行第 1 列、第 3 行第 1 列和第 2 行第 1 列的单元格的背景颜色为浅蓝色
table.Rows[0].Cells[0].CellFormat.BackColor = Color.get_LightBlue()
table.Rows[2].Cells[0].CellFormat.BackColor = Color.get_LightBlue()
# 设置表格第 1 行第 4 列、第 1 行第 5 列和第 1 行第 6 列的单元格的背景颜色为浅灰色
table.Rows[1].Cells[3].CellFormat.BackColor = Color.get_LightGray()
table.Rows[1].Cells[4].CellFormat.BackColor = Color.get_LightGray()
table.Rows[1].Cells[5].CellFormat.BackColor = Color.get_LightGray()
# 将文档保存为 output/MergeAndSplit.docx 文件,格式为 Docx2013
document.SaveToFile("output/MergeAndSplit.docx", FileFormat.Docx2013)
# 关闭文档对象
document.Close()
Python 用 Word 中数据填充表格
本示例创建一个 5x7 的表,将列表中的数据写入单元格,并对标题行和其他行应用不同的格式。以下是主要步骤:
- 创建 Document 类的对象。
- 使用 Document.AddSection() 方法向其添加一个部分。
- 使用 Section.AddTable() 方法添加一个表。
- 指定用于在两个列表中填充表的数据。
- 使用 Table.ResetCells() 方法根据数据的高度和宽度重置表的行号和列号。
- 使用 TableCell.AddParagraph().AppendText() 将数据写入相应的单元格。
- 通过 TableCell.CellFormat.BackColor 属性将不同的颜色应用于不同的行。
- 使用 Document.SaveToFile() 方法将文档保存到 .docx 文件。
- Python
import math
from spire.doc import *
from spire.doc.common import *
# 创建文档对象
doc = Document()
# 添加一个节
section = doc.AddSection()
# 在节中添加一个表格
table = section.AddTable(True)
# 定义表头数据
header_data = ["日期", "产品名称", "生产国家", "出口国家", "保质期"]
# 定义表格行数据
row_data = [
["08/07/2021", "海南椰汁", "中国", "韩国", "1个月"],
["08/07/2021", "咸鸭蛋", "中国", "日本", "3个月"],
["08/07/2021", "奶粉", "俄罗斯", "美国", "12个月"],
["08/08/2021", "面包", "丹麦", "中国", "3个月"],
["08/09/2021", "巧克力", "俄罗斯", "美国", "6个月"],
["08/10/2021", "金枪鱼", "日本", "美国", "15天"]
]
# 重置表格单元格数量
table.ResetCells(len(row_data) + 1, len(header_data))
# 设置表格的首选宽度为100%
table.PreferredWidth = PreferredWidth(WidthType.Percentage, int(100))
# 获取表头行
headerRow = table.Rows[0]
# 设置表头行为标题行,并设置高度、背景颜色等属性
headerRow.IsHeader = True
headerRow.Height = 23
headerRow.RowFormat.BackColor = Color.get_LightGray()
# 遍历表头数据,设置每个单元格的垂直对齐方式、段落格式等属性
i = 0
while i < len(header_data):
headerRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle
paragraph = headerRow.Cells[i].AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
txtRange = paragraph.AppendText(header_data[i])
txtRange.CharacterFormat.Bold = True
txtRange.CharacterFormat.FontSize = 12
i += 1
# 遍历表格行数据,设置每个单元格的垂直对齐方式、段落格式等属性
r = 0
while r < len(row_data):
dataRow = table.Rows[r + 1]
dataRow.Height = 20
dataRow.HeightType = TableRowHeightType.Exactly
c = 0
while c < len(row_data[r]):
dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle
paragraph = dataRow.Cells[c].AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
txtRange = paragraph.AppendText(row_data[r][c])
txtRange.CharacterFormat.FontSize = 11
c += 1
r += 1
# 遍历表格行,设置偶数行的背景颜色
for j in range(1, table.Rows.Count):
if math.fmod(j, 2) == 0:
row2 = table.Rows[j]
for f in range(row2.Cells.Count):
row2.Cells[f].CellFormat.BackColor = Color.get_LightBlue()
# 设置表格边框样式、线宽和颜色
table.TableFormat.Borders.BorderType = BorderStyle.Single
table.TableFormat.Borders.LineWidth = 1.0
table.TableFormat.Borders.Color = Color.get_Black()
# 保存文档到指定路径
doc.SaveToFile("output/Table.docx", FileFormat.Docx2013)
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。