PowerPoint 演示文稿是会议、讲座和研讨会等场合中共享数据和信息的重要工具,因此,其中也常包含用于数据展示和基本分析的表格。为了进一步利用这些数据,进行深入分析或将其整合到报告和电子表格等文档中,用户需要将这些表格从演示文稿中提取出来,并将其保存到文本文件、Excel 工作簿等其他格式的文件中。利用 Python,用户可以高效地从 PowerPoint 演示文稿中提取表格,将幻灯片中的简单表格转化为可深入处理的数据集。
本文将介绍如何使用 Spire.Presentation for Python 从 PowerPoint 演示文稿中提取表格,并将其写入文本文件和 Excel 工作表,实现数据提取的简化与自动化。
安装 Spire.Presentation for Python
本教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.Presentation for Python
从 PowerPoint 演示文稿中提取表格数据保存到文本文件
Spire.Presentation for Python 提供了 ITable 类,该类代表演示文稿幻灯片中的一个表格。通过遍历每张幻灯片中的形状并检查它们是否是 ITable 类的实例,开发者可以查找出演示文稿中的所有表格并获取表格中的数据。
从 PowerPoint 演示文稿中提取表格并将其写入文本文件的详细步骤如下:
- 创建一个 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法载入 PowerPoint 文件。
- 遍历演示文稿中的所有幻灯片,然后遍历幻灯片中的所有形状。
- 检查形状是否是 ITable 类的实例。如果是,遍历表格的行,然后是每行中的单元格。使用 TableRow[].TextFrame.Text 属性获取单元格值并将它们附加到字符串中。
- 将表格数据写入文本文件。
- Python
from spire.presentation import *
from spire.presentation.common import *
# 创建一个Presentation实例
presentation = Presentation()
# 加载一个PowerPoint文件
presentation.LoadFromFile("示例.pptx")
tables = []
# 遍历所有幻灯片
for slide in presentation.Slides:
# 遍历所有形状
for shape in slide.Shapes:
# 检查形状是否是表格
if isinstance(shape, ITable):
tableData = ""
# 遍历所有行
for row in shape.TableRows:
rowData = ""
# 遍历行中的所有单元格
for i in range(0, row.Count):
# 获取单元格的值
cellValue = row[i].TextFrame.Text
rowData += (cellValue + "\t" if i < row.Count - 1 else cellValue)
tableData += (rowData + "\n")
tables.append(tableData)
# 将表格写入文本文件
for idx, table in enumerate(tables, start=1):
fileName = f"output/Tables/Table-{idx}.txt"
with open(fileName, "w") as f:
f.write(table)
presentation.Dispose()
从 PowerPoint 演示文稿中提取表格数据保存到 Excel 工作表
使用 Spire.Presentation for Python 从演示文稿中提取表格数据后,开发者可以进一步利用 Spire.XLS for Python 将这些数据写入 Excel 工作表中,以便进行进一步分析和格式转换等操作。
通过 PyPI 安装 Spire.XLS for Python:
pip install Spire.XLS
从 PowerPoint 演示文稿中提取表格并将其写入 Excel 工作表的详细步骤如下:
- 创建一个 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法载入 PowerPoint 文件。
- 创建一个 Workbook 类的实例,并清除默认的工作表。
- 遍历演示文稿中的幻灯片,然后遍历幻灯片中的形状,检查形状是否是 ITable 类的实例。将所有 ITable 实例添加到一个列表中。
- 遍历列表中的表格,并为每个表格使用 Workbook.Worksheets.Add() 方法向工作簿添加一个工作表。
- 遍历每个表格的行,以及行中的单元格,通过 TableRow.TextFrame.Text 属性获取单元格值。通过 Worksheet.Range[].Value 属性将值写入工作表中的相应单元格。
- 使用 Workbook.SaveToFile() 方法保存工作簿。
- Python
from spire.presentation import *
from spire.presentation.common import *
from spire.xls import *
from spire.xls.common import *
# 创建一个Presentation实例
presentation = Presentation()
# 加载一个PowerPoint文件
presentation.LoadFromFile("示例.pptx")
# 创建一个Excel文件并清除默认工作表
workbook = Workbook()
workbook.Worksheets.Clear()
tables = []
# 遍历所有幻灯片
for slide in presentation.Slides:
# 遍历所有形状
for shape in slide.Shapes:
# 检查形状是否是表格
if isinstance(shape, ITable):
tables.append(shape)
# 遍历所有表格
for t in range(len(tables)):
table = tables[t]
sheet = workbook.Worksheets.Add(f"Sheet-{t+1}")
for i in range(0, table.TableRows.Count):
row = table.TableRows[i]
for j in range(0, row.Count):
sheet.Range[i + 1, j + 1].Value = row[j].TextFrame.Text
# 设置字体并自动调整行和列的大小
sheet.AllocatedRange.Style.Font.FontName = "HarmonyOS Sans SC"
sheet.AllocatedRange.Style.Font.Size = 12
sheet.AllocatedRange.AutoFitColumns()
sheet.AllocatedRange.AutoFitRows()
# 保存Excel文件
workbook.SaveToFile("output/演示文稿表格到Excel.xlsx", FileFormat.Version2016)
presentation.Dispose()
workbook.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。