目次
安装Python Word库
使用Python在Word中创建预定义行和列的表格
使用Python在Word中动态创建表格
使用Python在Word中提取表格数据
Word 文档中的表格是一种强盛且机动的数据构造和展示工具,它能将信息以行和列的形式有序地排列,使文档内容更加清晰易读。通过创建表格,我们可以轻松地将数据以结构化的方式出现出来,而提取表格数据则为后续的数据分析和二次利用提供了便利。这篇文章将探讨怎样使用Python在Word文档中创建表格和提取表格数据。
- 使用Python在Word中创建预定义行和列的表格
- 使用Python在Word中动态创建表格
- 使用Python在Word中提取表格数据
安装Python Word库
在Python中,我们可以使用Spire.Doc for Python库来操作Word文档中的表格,包括创建表格、填凑数据、设置格式、提取表格数据等。
Spire.Doc for Python主要用于在Python应用步伐中创建、读取、编辑和转换Word文件。它可以处理惩罚各种Word格式,包括Doc、Docx、Docm、Dot、Dotx、Dotm等。别的,还可以将Word文档转换为其他范例的文件格式,如Word转PDF、Word转RTF、Word转HTML、Word转文本、Word转图片、Word转OFD/XPS/PostScript。
你可以通过在终端运行以下命令来从PyPI安装Spire.Doc for Python:
使用Python在Word中创建预定义行和列的表格
Spire.Doc for Python提供了Section.AddTable() 方法,用于向Word文档添加表格。表格添加后,你可以使用Table.ResetCells(int, int) 方法来定义它的行数和列数。最后再向表格的单位格中填凑数据。核心步骤如下:
- 创建Document类的实例。
- 使用Document.AddSection()方法给文档添加一个节。
- 定义表格数据并将其存放至一个二维数组中。
- 使用Section.AddTable()方法给节添加一个表格,然后使用Table.ResetCells(int, int)方法来定义表格的行数和列数。
- 遍历表格数据并将其添补到表格单位格中,同时设置表头和数据行的格式。
- 使用Document.SaveToFile()方法保存结果文档。
完整代码:
- from spire.doc import *
- from spire.doc.common import *
- # 创建 Document 类的实例
- document = Document()
- # 添加一个节到文档中
- section = document.AddSection()
- # 设置节的页边距
- section.PageSetup.Margins.All = 72.0
- # 向节添加一个段落
- para = section.AddParagraph()
- # 设置段落文本对齐方式
- para.Format.HorizontalAlignment = HorizontalAlignment.Center
- # 向段落添加文本
- txtRange = para.AppendText("员工薪资表")
- txtRange.CharacterFormat.FontName = "宋体"
- txtRange.CharacterFormat.FontSize = 16
- txtRange.CharacterFormat.Bold = True
- # 定义表格数据
- table_data = [
- ["员工姓名", "部门", "职位", "薪资"],
- ["张三", "销售部", "销售经理", "75000元"],
- ["李四", "市场部", "市场协调员", "55000元"],
- ["王五", "IT部", "软件工程师", "85000元"],
- ["赵六", "人力资源部", "HR专员", "60000元"],
- ["陈七", "财务部", "财务分析师", "70000元"]
- ]
- # 向节添加一个表格
- table = section.AddTable(True)
- # 指定表格的行数和列数
- table.ResetCells(len(table_data), len(table_data[0]))
- # 向表格添加数据
- for r, row in enumerate(table_data):
- for c, cell_data in enumerate(row):
- # 向当前单元格添加一个段落
- para = table.Rows[r].Cells[c].AddParagraph()
-
- if r == 0: # 表头行
- # 设置表头行的高度,背景色和文本对齐方式
- table.Rows[r].Height = 23
- table.Rows[r].RowFormat.BackColor = Color.FromArgb(1, 142, 170, 219)
- para.Format.HorizontalAlignment = HorizontalAlignment.Center
- table.Rows[r].Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle
-
- # 向表头行填充数据并设置字体名称,大小,颜色和加粗
- txtRange = para.AppendText(cell_data)
- txtRange.CharacterFormat.FontName = "宋体"
- txtRange.CharacterFormat.FontSize = 14
- txtRange.CharacterFormat.TextColor = Color.get_White()
- txtRange.CharacterFormat.Bold = True
- else:
- # 设置数据行的高度和文本对齐方式
- table.Rows[r].Height = 20
- para.Format.HorizontalAlignment = HorizontalAlignment.Center
- table.Rows[r].Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle
- # 向数据行填充数据并设置字体名称和大小
- txtRange = para.AppendText(cell_data)
- txtRange.CharacterFormat.FontName = "宋体"
- txtRange.CharacterFormat.FontSize = 11
- # 保存文档
- document.SaveToFile("创建表格.docx", FileFormat.Docx2013)
- document.Close()
复制代码
使用Python在Word中动态创建表格
除了创建具有预定义行和列的静态表格,你还可以通过动态添加行和单位格的方式来创建表格。这种方式主要用到Table.AddRow()和TableRow.AddCell()两个方法。核心步骤如下:
- 创建Document类的实例。
- 使用Document.AddSection()方法给文档添加一个节。
- 定义表格数据并将其存放至一个二维数组中。
- 使用Section.AddTable()方法给节添加一个表格。
- 使用Table.AddRow()向表格添加行。
- 使用TableRow.AddCell()方法向行添加单位格。
- 使用TableCell.AddParagraph().AppendText()方法向单位格填凑数据,然后设置格式。
- 重复以上第5-7个步骤向表格添加行和单位格,并填凑数据。
- 使用Document.SaveToFile()方法保存结果文档。
完整代码:
- from spire.doc import *
- from spire.doc.common import *
- # 创建 Document 类的实例
- document = Document()
- # 添加一个节到文档
- section = document.AddSection()
- # 设置节的页边距
- section.PageSetup.Margins.All = 72.0
- # 添加一个表格到节
- table = section.AddTable()
- # 动态添加行和单元格到表格
- row = table.AddRow()
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("产品")
- txtRange.CharacterFormat.FontName = "宋体"
- txtRange.CharacterFormat.FontSize = 13
- txtRange.CharacterFormat.Bold = True
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("单价")
- txtRange.CharacterFormat.FontName = "宋体"
- txtRange.CharacterFormat.FontSize = 13
- txtRange.CharacterFormat.Bold = True
- row = table.AddRow(True, False)
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("显示器")
- txtRange.CharacterFormat.FontName = "宋体"
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("500")
- txtRange.CharacterFormat.FontName = "宋体"
- row = table.AddRow(True, False)
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("键盘")
- txtRange.CharacterFormat.FontName = "宋体"
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("80")
- txtRange.CharacterFormat.FontName = "宋体"
- row = table.AddRow(True, False)
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("CPU散热器")
- txtRange.CharacterFormat.FontName = "宋体"
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("20")
- txtRange.CharacterFormat.FontName = "宋体"
- row = table.AddRow(True, False)
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("鼠标")
- txtRange.CharacterFormat.FontName = "宋体"
- cell = row.AddCell()
- cell.SetCellWidth(200, CellWidthType.Point)
- txtRange = cell.AddParagraph().AppendText("120")
- txtRange.CharacterFormat.FontName = "宋体"
- # 应用表格样式
- table.ApplyStyle(DefaultTableStyle.MediumGrid1Accent5)
- # 自动调整表格大小以适应窗口
- table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
- # 保存文档
- document.SaveToFile("动态创建表格.docx", FileFormat.Docx2013)
- document.Close()
复制代码
使用Python在Word中提取表格数据
要提取Word文档中的表格数据,首先需要循环遍历文档中的表格,然后循环遍历表格中的单位格并获取其中的数据。核心步骤如下:
- 创建Document类的实例。
- 使用Document.LoadFromFile()方法加载Word文档。
- 循环遍历文档中的全部节和每个节中的全部表格。
- 循环遍历表格中的全部行。
- 循环遍历每行的单位格,获取单位格数据并将其添加至列表。
- 将列表数据保存至文本文件。
完整代码:
- from spire.doc import *
- from spire.doc.common import *
- # 创建 Document 实例
- document = Document()
- # 加载 Word 文档
- document.LoadFromFile("创建表格.docx")
- # 保存表格数据的文本文件
- output_file = "表格数据.txt"
- # 循环遍历文档中的所有节和每个节中的所有表格
- for section_idx in range(document.Sections.Count):
- section = document.Sections[section_idx]
- for table_idx in range(section.Tables.Count):
- table = section.Tables[table_idx]
-
- # 创建一个列表来存储每个表格的数据
- data_list = []
-
- # 循环遍历表格的行
- for row_idx in range(table.Rows.Count):
- row = table.Rows[row_idx]
- row_data = []
- # 循环遍历每个行的单元格
- for cell_idx in range(row.Cells.Count):
- cell = row.Cells[cell_idx]
- # 循环遍历每个单元格中的段落
- for para_idx in range(cell.Paragraphs.Count):
- paragraph = cell.Paragraphs[para_idx]
- # 将每个单元格的文本添加到行数据列表中
- row_data.append(paragraph.Text.strip())
- # 将行数据添加到表格数据列表中,并添加制表符分隔
- data_list.append("\t".join(row_data))
-
- # 将当前表格的数据写入文本文件,并添加换行分隔
- with open(output_file, "a", encoding="utf-8") as text_file:
- text_file.write("\n".join(data_list))
- text_file.write("\n")
- # 关闭文档
- document.Close()
复制代码 以上就是使用Python在Word中创建和提取表格的全部内容,盼望对你有所帮助。本文完。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |