Python-包-python-pptx生成PPT

简介

处于某些上下游对接需求,所以需要频繁的将生信的分析结果整理成PPT文件,以便进行结果的展示。所以基于该模块可以更方便的在集群上自动化生成相关的文档示例,用于进行后续的处理。

使用python操作PPT,需要使用的模块就是python-pptx,下面来对该模块做一个简单的介绍。
这里提前做一个说明:python操作PPT,最好是我们提前设计好自己的一套样式,然后利用进行python进行内容的获取和填充(最主要的功能!),最好是不用使用python代码操作PPT的格式,格式的修改肯定不如我们直接在PPT中修改方便。
可以创建、修改PPT(.pptx)文件。

环境准备

模块的安装

需要单独安装,不包含在Python标准模块里

1
2
3
4
# "Windows用户命令行下输入"
pip install python-pptx
# "Mac用户命令行下输入"
pip3 install python-pptx

模块的导入

1
import pptx

模块的使用

python读取PPT文档中的内容

在使用python操作PPT之前,首先应该清楚PPT的结构,这个对于之后代码的编写很有帮助。

获取Slide

1
2
3
4
5
from pptx import Presentation

prs = Presentation("统计学习方法PPT.pptx")
for slide in prs.slides:
print(slide)

获取Shape形状

1
2
3
4
5
6
7
8
9
10
import pptx
from pptx import Presentation

prs = Presentation("统计学习方法PPT.pptx")
for slide in prs.slides:
for shape in slide.shapes:
print(shape)
"""
注意:这里得到的Shape对象,并不能看出什么,接着往下看。
"""

判断每个Shape中是否存在文字

  • shape.has_text_frame :是否有文字
  • shape.text_frame :获取文字框
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import pptx
    from pptx import Presentation

    prs = Presentation("统计学习方法PPT.pptx")
    for slide in prs.slides:
    for shape in slide.shapes:
    if shape.has_text_frame:
    text_frame = shape.text_frame
    print(text_frame.text)

获取某一页Slide中的内容

1
2
3
4
5
6
7
8
9
10
11
import pptx
from pptx import Presentation

prs = Presentation("统计学习方法PPT.pptx")

for i,slide in enumerate(prs.slides):
if i == 5:
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
print(text_frame.text)

获取Shape中的某个Paragraph

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pptx
from pptx import Presentation

prs = Presentation("统计学习方法PPT.pptx")

for i,slide in enumerate(prs.slides):
if i == 5:
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
for paragraph in text_frame.paragraphs:
print(paragraph.text)
"""
注意:该方法和上述4)中的方法一摸一样。上述方法是直接获取Shpae中的文字内容;
下面这个更灵活,先获取每个Shape,然后在获取每个Shape中的paragraph;
下面方式更好:因为我们可以针对paragraph,写一个判断条件,只获取第几个paragraph;
"""

参考

readthedocs
知乎
CSDN

-------------本文结束感谢您的阅读-------------