Python提取PowerPoint演示文稿表格保存到文本及Excel文件

PowerPoint作为广泛使用的演示工具,常被用于展示各类数据报告和分析结果,其中,表格以其直观性和结构性成为阐述数据关系的不二之选。然而,在数据分析、文档归档或跨平台分享的场景下,幻灯片中的表格功能难以满足需求,提取其中表格并写入其他文件是更好的处理方法。将表格内容转化为文本或Excel格式能够促进数据的快速流通与理解,同时也为自动化处理和进一步的数据挖掘提供了便利。而使用Python能够帮助我们更高效、精确地提取PowerPoint演示文稿中的表格,还可以实现表格提取的自动话进行。本文将介绍如何使用Python来提取PowerPoint幻灯片中的表格,并将表格数据写入文本文件以及Excel文件。

文章目录

    • 用Python提取PPT表格并写入文本文件
    • 用Python提取PPT表格并写入Excel工作表

本文所使用的表格提取方法基于Spire.Presentation for Python,PyPI:pip install Spire.Presentation

用Python提取PPT表格并写入文本文件

该库中的ITable类表示演示文稿中的表格。我们可以遍历演示文稿中的幻灯片,再遍历幻灯片中的所有内容对象(IShape实例),并判断其是否为ITable实例,从而获取演示文稿中的所有表格。获取到表格之后,再使用ITable.TableRow[].TextFrame.Value属性获取表格单元格的数据,即可实现表格的提取。以下是操作步骤:

  1. 导入所需模块。
  2. 创建Presentation实例,使用Presentation.LoadFromFile()方法载入PowerPoint文件。
  3. 遍历幻灯片,再遍历幻灯片中的内容对象,判断其是否为ITable实例。
  4. 遍历ITable实例中的行,以及行中的单元格,使用TableRow[].TextFrame.Value获取单元格数据。
  5. 使用单元格数据构建字符串,并写入文本文件。
  6. 释放资源。

代码示例

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.TextrowData += (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()

提取结果
Python提取PPT表格写入文本

用Python提取PPT表格并写入Excel工作表

除了将提取到的表格数据写入文本文件外,我们还可以使用Spire.XLS for Python(PyPI:pip install Spire.XLS)将提取到的数据写入到Excel工作表中,并进行其他格式设置及文件转换等操作。以下是操作步骤:

  1. 导入所需模块。
  2. 创建Presentation实例,使用Presentation.LoadFromFile()方法载入PowerPoint文件。
  3. 创建Workbook对象从而新建一个Excel工作簿,使用Workbook.Worksheets.Clear()方法清除工作簿中的默认工作表。
  4. 遍历幻灯片,再遍历幻灯片中的内容对象,判断其是否为ITable实例。将ITable实例添加到列表中。
  5. 遍历列表中的ITable实例,使用Workbook.Worksheets.Add()方法为每个ITable实例创建一个工作表。
  6. 遍历ITable实例中的行以及行中的单元格,使用TableRow[].TextFrame.Value获取单元格数据,再使用Worksheet.Range[].Value属性将数据写入到工作表中的对应单元格。
  7. 进行工作表格式设置。
  8. 保存Excel工作簿,或将其转换为其他格式的文件。
  9. 释放资源。

代码示例

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(ttables)):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.0sheet.AllocatedRange.AutoFitColumns()sheet.AllocatedRange.AutoFitRows()# 保存Excel文件
workbook.SaveToFile("output/PresentationTables.xlsx", FileFormat.Version2016)presentation.Dispose()
workbook.Dispose()

提取结果
Python提取PPT表格写入Excel文件

本文介绍了如何使用Python提取PowerPoint演示文稿中的表格数据,并写入文本文件或Excel工作簿。

更多PowerPoint演示文稿处理技巧请前往Spire.Presentation for Python教程查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt全局快捷键QGlobalHotKey的自研之路

这两天对Qt的快捷键格外感兴趣。 前两天在使用QHotKey的过程中&#xff0c;发现不能定义小键盘键盘码&#xff0c;自己二次修改了该库之后已经可以设置小键盘快捷键了。文章在这里&#xff1a;Qt第三方库QHotKey设置小键盘数字快捷键。 昨天突发奇想&#xff1a;目前所有的快…

# RocketMQ 实战:模拟电商网站场景综合案例(十一)

RocketMQ 实战&#xff1a;模拟电商网站场景综合案例&#xff08;十一&#xff09; 一、RocketMQ 实战&#xff1a;模拟电商网站场景综合案例-- web 端项目开发 1、在 shop-order-web 工程模块中&#xff0c;创建 Controller 类 OrderControllre.java /*** shop\shop-order…

DBeaverUE Mac版:数据库管理新纪元,一键掌控所有数据

DBeaverUE for Mac是一款卓越的数据库管理软件&#xff0c;专为Mac用户设计&#xff0c;提供了一套高效、稳定且全面的数据库解决方案。以下是关于这款插件的详细介绍&#xff1a; 1. 强大的数据库支持 DBeaverUE for Mac支持多种数据库系统&#xff0c;包括但不限于MySQL、Po…

电脑自带录屏在哪?电脑录屏,4个详细方法

在现代社会中&#xff0c;越来越多的人需要在电脑上录制视频&#xff0c;比如录制游戏操作、制作教学视频、演示文稿等等。因此&#xff0c;电脑录屏成为了一项非常重要的功能。那么电脑自带录屏在哪&#xff1f;本文将带领大家看看可以使用哪些方法进行录屏。 录屏方法一&…

比人工快100倍!给3D模型用上轻量化,老爷机也能起飞!!!!!!

3D可视化开发&#xff0c;考虑最多的要素&#xff0c;当属模型加载流畅度和应用性。但面对单位的电脑、不能升级硬盘的笔记本等&#xff0c;可能还是无法体会到模型丝滑加载的畅快。 况且3D模型数据、格式等&#xff0c;也在不断发展扩充&#xff0c;昔日手工就能“调教”的3D…

centos7.5安装Node.js 20.5.1后报段错误(吐核)

centos7.5安装Node.js 20.5.1后报段错误 缘起 开发要求安装Node.js 20.5.1以解决dependencyCheck扫描出来的各种安全问题。安装过程 1、 下载安装Node.js 20.5.1 wget https://nodejs.org/download/release/v20.5.1/node-v20.5.1-linux-x64.tar.gztar -xzf node-v20.5.1-li…

linxu-Ubuntu系统上卸载Kubernetes-k8s

如果您想从Ubuntu系统上卸载Kubernetes集群&#xff0c;您需要执行以下步骤&#xff1a; 1.关闭Kubernetes集群&#xff1a; 如果您的集群还在运行&#xff0c;首先您需要使用kubeadm命令来安全地关闭它&#xff1a; sudo kubeadm reset在执行该命令后&#xff0c;系统会提示…

【OceanBase诊断调优】 —— DDL时报磁盘不足问题排查

1. 背景 由于在4.x的部分版本中&#xff0c;我们对于一些ddl操作还存在磁盘空间放大问题&#xff0c;本文主要介绍了这一类问题的排查。 2. 问题排查 2.1 整体排查链路 2.2 问题现象 DDL过程中报磁盘空间不足&#xff0c;需要确认是否符合预期&#xff0c;如果是符合预期&a…

客厅3d模型素材下载哪家好?

客厅是家庭生活中最重要的空间之一&#xff0c;承载着家人的欢聚、交流和休息。而客厅3D模型让家居设计师更好的完成设计布局和设计规划&#xff0c;为用户呈现出一个更加真实的家居空间。那么客厅3d模型素材下载哪家好? 1、建e网的3D模型库不仅数量庞大&#xff0c;而且质量上…

高考后志愿填报信息采集系统制作指南

在高考的硝烟散去之后&#xff0c;每位学生都面临着一个重要的任务——志愿填报。老师们如何高效、准确地收集和整理这些信息&#xff0c;成为了一个棘手的问题。难道我们只能依赖传统的手工登记方式&#xff0c;忍受其繁琐和易错吗&#xff1f; 易查分是一个简单易用的在线工具…

Kaggle -- Multi-Class Prediction of Obesity Risk

使用简单的决策树进行分类&#xff0c;代码如下&#xff1a; import pandas as pd import numpy as np from sklearn.preprocessing import OneHotEncoder from sklearn.model_selection import train_test_splitdf pd.read_csv("train.csv")df[Gender] df[Gender…

Word同行内的文字如何左右分别对齐

先打开标尺&#xff08;视图-标尺&#xff09; 开右边&#xff0c;选一个制表位置&#xff0c;比如我选34 切回开始&#xff0c;点段落段落右下角 然后 然后 我修改为35&#xff08;因为“6月13日”总共3个字符&#xff09; 在文字中间按下Tab键&#xff0c;效果如下

流程设计的基本步骤

背景 公司为什么要流程&#xff0c;已经有专门章节进行阐述&#xff1b; 什么是流程&#xff0c;已经有专门章节进行专门阐述&#xff1b; 那么接下来这个章节讨论&#xff0c;流程设计的基本步骤&#xff0c;那么谁来设计流程呢&#xff0c;让一个部门的员工来设计一份流程…

【嵌入式DIY实例】-Nokia 5110显示DHT11/DHT22传感器数据

Nokia 5110显示DHT11/DHT22传感器数据 文章目录 Nokia 5110显示DHT11/DHT22传感器数据1、硬件准备2、代码实现2.1 显示DHT11数据2.2 显示DHT22数据本文介绍如何将 ESP8266 NodeMCU 开发板 (ESP-12E) 与 DHT11 数字湿度和温度传感器以及诺基亚 5110 LCD 连接。 NodeMCU 从 DHT11…

某国资集团数据治理落地,点燃高质量发展“数字引擎”

​某国有资产经营控股集团为快速提升集团的内控管理能力和业务经营能力&#xff0c;以数字化促进企业转型的信息化建设势在必行。集团携手亿信华辰开启数据治理项目&#xff0c;在数据方面成功解决“哪里来、怎么盘、怎么管、怎么用”的问题&#xff0c;不断推动企业数字化转型…

Kali Linux 2022.2 发布,包含 10 个新工具和WSL 改进

Offensive Security发布了Kali Linux 2022.2&#xff0c;这是2022年的第二个版本&#xff0c;具有桌面增强功能&#xff0c;有趣的愚人节屏幕保护程序&#xff0c;WSL GUI改进&#xff0c;终端调整&#xff0c;最重要的是&#xff0c;新的工具&#xff01; Kali Linux是一个Li…

element 树组件 tree 横向纵向滚动条

Html <el-cardshadow"hover"class"solo flex-2"style"height: calc(100vh - 1.6rem); border: 1px solid #ebeef5"><div slot"header" class"clearfix"><span>问题分类</span></div><div …

uniapp地图导航

我们只需要给图标加一个点击事件 我这里的数据都是动态的&#xff0c;想测试的朋友可以写固定值 然后跳转之后首先会调到选择软件导航 点击导航之后会显示使用哪个app 最后我们选择之后将会直接跳转到app进行导航

LMDeploy 量化部署

LMDeploy简介 LMDeploy是一个由MMDeploy和MMRazor团队联合开发的工具包&#xff0c;旨在为大型语言模型&#xff08;LLM&#xff09;提供全套的轻量化、部署和服务解决方案。以下是对LMDeploy的简介&#xff0c;采用分点表示和归纳的方式&#xff1a; 核心功能&#xff1a; 高…

Stable Diffusion: ControlNet 插件安装

前面介绍了一些通过代码实现ControlNet进行控制的案例。现在通过Stable Diffusion体验一下更便捷的操作。 Stable Diffusion插件安装办法大致相同。启动Stable Diffusion后&#xff0c;点击最右边的“扩展”&#xff0c;点击“可下载”&#xff0c;点击“加载扩展列表”。 视网…