当前位置:   article > 正文

Python处理PPT文件的实用姿势_python-pptx模块操作ppt的常见方法

python-pptx模块操作ppt的常见方法

好看的皮囊千篇一律,有趣的灵魂两百多斤。

和Word、Excel承载数据的能力相比,PPT的应用重点在于表演。

比如一场发布会、一场演说、一次产品展示、一次客户沟通……

正常情况下,用PowerPoint等软件制作PPT是明智的选择,简单实用。

但如果需要批量或者自动化处理PPT文件时,用Python就能节省很多时间。
比如:

  • 用PPT批量生成一些发布会风格的图片
  • 从大量PPT中提取表格数据
  • 用PPT批量制作简单动画

处理PPT的Python库,主要有两类:

  • pywin32,调用操作系统上已装好的PPT软件。
  • python-pptx,根据OpenXML规范解析XML文件。

日常处理推荐使用python-pptx模块,它基于PIL处理图片,基于xlsxwriter处理图表。

但如果需要批量转换PPT文件格式,如导出成PDF,那就得用pywin32,而且只能在Windows操作系统上操作。

本文主要介绍python-pptx用法,模块安装:pip install python-pptx

注意:python-pptx暂时还不支持SmartArt和动画。如果需要批量生成,就得自己操作XML文件中对应内容。

基本使用

PPT中基本元素包括:

  • slide(幻灯片):一个PPT由一系列slide构成。
  • slide_master(幻灯片母版):母版可定义主题样式基准。
  • slide_layouts(模版):创建幻灯片时可选择的模版。
  • shape(形状):包含一切可视元素,通过slide.shapes可访问slide内元素。
  • placeholder(占位符):在模板中占据位置,如图片、文字等。
  • paragraph(段落):文本段,可以直接设置整段文本样式。
  • text(文本):段落内的文本,通过paragraph.add_run()生成。
import pathlib
from pptx import Presentation
from pptx.enum.dml import MSO_THEME_COLOR
from pptx.util import Inches, Pt

path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/005ppt')
out_path = path.joinpath('005ppt_basic.pptx')
prs = Presentation()
# 查看所有布局
for lo in prs.slide_layouts:
    print(lo.name)
# 创建标题页
title_slide_layout = prs.slide_layouts[0]
print(w, h, lo, ma)
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = '只差一个程序员了'
subtitle.text = '程一初'
# 设置背景色
fill = slide.shapes[0].fill
fill.solid()
fill.fore_color.theme_color = MSO_THEME_COLOR.ACCENT_1
fill.fore_color.brightness = -0.25
# 创建第一页内容
bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes
title_shape = shapes.title
body_shape = shapes.placeholders[1]
title_shape.text = 'Python1024'
tf = body_shape.text_frame
tf.text = '第一级内容'
p = tf.add_paragraph()
p.text = '第一级段落内容'
p.level = 1
p = tf.add_paragraph()
p.text = '第二级段落内容'
p.level = 2
run = p.add_run()
# 与`python-docx`里的用法类似,但内容设置在`text`中
run.text = '自定义字体'
run.font.name = '微软雅黑'
run.font.size = Pt(25)
run.font.bold = True
print(tf.paragraphs[0].text)
# 从一个空白页开始创建内容
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
left = top = width = height = Inches(1)
txt_box = slide.shapes.add_textbox(left, top, width, height)
tf = txt_box.text_frame
tf.text = '文本框内容'
p = tf.add_paragraph()
p.text = '文本框内增加一个粗体段落'
p.font.bold = True
p = tf.add_paragraph()
p.text = '文本框内增加一个大字体段落'
p.font.size = Pt(40)
prs.save(out_path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

图片和图形

PPT中图相关元素有3类:

  • picture:图像,单位是Inch
  • autoshape:形状,如流程图
  • chart:图表,如直方图、饼图
生成流程图
import pathlib
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1001735
推荐阅读
相关标签
  

闽ICP备14008679号