python对PPT演示文档读写,是通过第三方库python-pptx实现的,python-pptx是用于创建和更新 PowerPoint(.pptx)文件的 Python 库。

关于PPT演示文档与幻灯片模板的内容不是本文的重点,在此略过。

1. PPT基本结构在python-pptx下定义

1.1. 演示文档结构定义

python-pptx对ppt结构的描述如下图所示,演示文档由多个幻灯片(slide)构成,每个幻灯片由众多各种形状(shape)组成。

  • Slide:幻灯片,就是演示文稿中每一页的页面。
  • Shape:形状,在每页幻灯片内插入的方框,可以是形状,也可以是文本框、图片、表格等等。
  • Run:文字块,一般为较少字符。
  • Paragraph:段落,通常有序号ㆍ、1.等。

    图示演示文档,如下图所示,由3页幻灯片(slide)构成,其中,第三页幻灯片中的形状(shape)分别是“标题 1”(Title 1)和“图片”(Picture Placeholder 2)组成。

1.2. 自定义幻灯片母版

使用程序生成演示文档,最好先自定义幻灯片母版,如下图所示,定义4页模板(slide_layouts)。

注意:shape名称在office软件下,是中文,而程序读出来的可能是英文!


对于母版内容:

  • Slides_layouts:版式,一个幻灯片母版由多个版式组成,索引从0开始。
    slide_layouts[]传入0表示获取的是第一个版式,传入1表示获取的是第二个版式

  • Placeholder:占位符:存在PPT母版里面的幻灯片的某一部件:Placeholder

2. python-pptx操作PPT实践

2.1. 安装python-pptx

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-pptx

2.2. 读取PPT演示文档

from pptx import Presentation# 打开演示文档
prs = Presentation('加油站全流程诊断大数据系统.pptx')
for slide in prs.slides:print(slide)# 写入新文件中
prs.save('test.pptx')# 获取某一页Slide中的内容for i, slide in enumerate(prs.slides):if i == 3:for shape in slide.shapes:if shape.has_text_frame:text_frame = shape.text_frameprint(text_frame.text)

2.3. 基于模板创建新的演示文档

这里所说模板仍然是pptx文件,不是PPT的模板(potx),python-pptx无法读取potx模板。也是说,使用仅有一页,并且无内容的空演示文档,内含自定义幻灯片母版,如前面所述的母版样例。

创建新演示文档过程如下:

  • 首先,修改首页内容,例如主题和副主题
  • 接着,按实际要求,使用具体模板,也就是slide_layouts

代码过程如下:

from pptx import Presentation
from PIL import Imageim=Image.open('d:\\02资料\\AI无感加油.png')# 修改首页
prs= Presentation('template_1.pptx')
slide = prs.slides[0]
title = ['油站全流程诊断输出测试页','测试页副标题']
for i, shape in enumerate(slide.shapes):if shape.has_text_frame:text_frame = shape.text_frametext_frame.text = title[i]# 插入内容测试
slide = prs.slides.add_slide(prs.slide_layouts[1])  # 用第一个母版生成一页ppt
for shape in slide.placeholders:         # 获取这一页所有的占位符phf = shape.placeholder_formatprint(f'{phf.idx}--{shape.name}--{phf.type}')print('shape name ', shape.name)if shape.name ==  'Title 1':shape.text = f'目标'  #在标题占位符中填写“目标”else:shape.text = f'内容'  #在其他占位符中填写“内容”        # 插入图片测试
im.save('tmp.png') #从外部(数据库)读取的图片,临时存储
slide = prs.slides.add_slide(prs.slide_layouts[2])  # 用第一个母版生成一页ppt
for shape in slide.placeholders:         # 获取这一页所有的占位符phf = shape.placeholder_formatprint(f'{phf.idx}--{shape.name}--{phf.type}')print('shape name ', shape.name)if shape.name ==  'Title 1':shape.text = f'插入图片测试'  #在标题占位符中填写“目标”else:shape.insert_picture('tmp.png')  #在其他占位符中填写“图片”prs.save('向占位符内填写内容_1.pptx')

附加内容:列出对象属性。

for i, shape in enumerate(slide.shapes):print('对象类型', shape.shape_type)print('对象属性列表', dir(shape))

shape部分属性列表:

  • ‘has_chart’,
  • ‘has_table’,
  • ‘has_text_frame’,
  • ‘height’,
  • ‘is_placeholder’,
  • ‘name’,
  • ‘part’,
  • ‘placeholder_format’,
  • ‘shape_id’,
  • ‘shape_type’,
  • ‘text’,
  • ‘text_frame’,
  • ‘top’,
  • ‘width’

3. 小结

对于数据分析结果规范化输出,python-pptx功能基本满足,使用条件是精通PPT,设计出合适的母版,供程序交互使用。

参考:

牧文山. Python自动化办公 - 对PPT的操作(Python-pptx的基本使用). CSDN博客. 2022.03
python-pptx documentation
lsxxx2011. 详解 Python 操作 PPT 的各种骚操作!. 51CTO博客. 2022.08

使用python-pptx创建PPT演示文档功能实践相关推荐

  1. C# 如何获取PPT演示文档中的所有标题

    C# 如何获取PPT演示文档中的所有标题 标题是一个PPT演示文档不可或缺的部分,它可以让一个长的PPT演示文档变得有条理性,同时也可以提醒观众演讲者接下来要演示的内容. 在开始前,我们要了解一个概念 ...

  2. python 自动生成word文档,python实现的生成word文档功能示例

    python实现的生成word文档功能示例 发布时间:2020-09-23 11:37:44 来源:脚本之家 阅读:108 作者:zhizunyu2009 本文实例讲述了python实现的生成word ...

  3. ppt演示文档如何瘦身

    开总结会的时候了,用Powerpoint编辑一个PPT演示文稿是必不可少的.但如果因Powerpoint体积过大引起的运行缓慢.死机就麻烦了.这里,笔者总结出几条给PowerPoint减肥的好方法,大 ...

  4. 怎么用python创建文件-如何用Python创建生成xml文档文件的方法

    用如何用Python完成创建生成xml文档文件的工作. 需要用到的方法:from xml.dom.minidom import Document,想必大家很熟悉这个操作了,接下来就用python 创建 ...

  5. 将演示文档导出为视频,并用Camtasia剪辑

    随着互联网的普及,能够足不出户上网课,节省时间也节省资源,对老师们来说,利用录屏剪辑软件也能轻松进行线上授课.科研讨论等工作. 而Camtasia 2020不光适合录屏剪辑,同样是一款适合初学者的微课 ...

  6. python生成word文档_python实现的生成word文档功能示例

    本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- ...

  7. python 自动生成word文档_python实现的生成word文档功能示例

    本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- ...

  8. PPT保存pps演示文档时,在另一个电脑中字体显示不正常!(已解决)

    PPT保存pps演示文档时,在另一个电脑中字体显示不正常!(已解决)

  9. 制作技术培训演示文档(PPT)的一些经验和建议

    CSDN上的技术牛人真的不少,相信各位应该经常制作PPT(Power Point)演示文档做培训或进行技术传播吧.正好不久前完成了公司产品培训及工作流概念培训,同时最近在准备个SOA/Web Serv ...

最新文章

  1. oracle控制文件发生坏块,控制文件坏块处理方法
  2. IFE JavaScript Task0002-1 小练习1:处理用户输入
  3. 虚拟化运行[OpenStack] VMWare产品介绍
  4. 服务器LCD显示面板,DELL服务器2950的错误代码表(前LCD面板)
  5. PostgreSQL and SQLAlchemy [ubuntu]
  6. 【图论】最短路学习笔记
  7. Android反编译与防止反编译
  8. 从今天起,我不再使用 Java Date了!
  9. 一个校园互联网实验室的纳新试题(我的服务端开发笔试题)
  10. python3网络爬虫-介绍
  11. 【图像处理】基于matlab自动报靶系统(重弹孔)
  12. 超高性价比——DIY 斯坦福Pupper机器狗
  13. 财务共享,减少凭证复核与合同支付审计的风险,加强企业内控
  14. tflearn的VocabularyProcessor用法:建立中文词汇表和把文本转为词ID序列
  15. crh寄存器_寄存器简写
  16. 基于MATLAB的人脸考勤识别系统
  17. 关于spring IoC 学习
  18. 解决 / 小程序安卓机图片无法显示的问题+发布审核问题
  19. 人工智能:Django的学习,下象棋的小游戏
  20. 应届毕业生程序员的工资水平怎么样?聊聊程序员是不是高薪职业

热门文章

  1. WCF学习(一)WCF概述
  2. VS2010上单独编译ocl模块(opencv248)
  3. html中表格的页眉页脚,HTML 表格
  4. OCR文字识别API助力企业提升工作效率
  5. 软件测试学着难吗,软件测试难学吗?学不会怎么办?
  6. 中国互联网超爱读错的单词:极客词典
  7. 有趣问题——倒水问题
  8. 上海市python培训机构
  9. 高楼翻译:并发用户数的估算方法(请仔细看译者注)
  10. 怎样看待 12 个月内自学完成 4 年麻省理工学院计算机科学的 33 门课程的 Scott H. Young 所谓的超速学习理论和方法(费曼技巧)以及背后「Get More from Life」的理念