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 天的临时许可证。