python-pptx 是一个用于创建和更新PowerPoint(.pptx)文件的Python库。

典型的用途是从数据库内容生成自定义的PowerPoint演示文稿,可通过单击Web应用程序中的链接进行下载。

一些开发人员使用它根据工作管理系统中保存的信息自动生成可立即呈现的工程状态报告。

它还可以用于对演示文稿库进行批量更新,或者仅仅是为了自动生成一个或两个幻灯片,这对于手动操作来说是繁琐的。

安装

pip install python-pptx

PPT 文件内容结构

Presentations

Slides

Shapes

Placeholders

able-related objects

ChartData objects

Charts

Text-related objects

Click Action-related objects

DrawingML objects

Image

读取 PPT 文件

打开 ppt 文件,方式1

from pptx import Presentation

# prs = Presentation()

prs = Presentation('existing-prs-file.pptx')

prs.save('test.pptx')

打开 ppt 文件,方式2

from pptx import Presentation

f = open('foobar.pptx')

prs = Presentation(f)

f.close()

打开 ppt 文件,方式3

with open('foobar.pptx') as f:

source_stream = StringIO(f.read())

prs = Presentation(source_stream)

source_stream.close()

target_stream = StringIO()

prs.save(target_stream)

演示文稿中的每张幻灯片都基于幻灯片布局。因此,您必须指定在创建新幻灯片时使用哪种幻灯片布局,这并不奇怪。让我们花点时间了解一些我们需要的幻灯片布局,以便我们添加的幻灯片看起来像我们想要的那样。

写入 PPT 文件

最简单的示例

from pptx import Presentation

prs = Presentation()

title_slide_layout = prs.slide_layouts[0]

slide = prs.slides.add_slide(title_slide_layout)

title = slide.shapes.title

subtitle = slide.placeholders[1]

title.text = "标题"

subtitle.text = "正文"

prs.save('test.pptx')

示例2

from pptx import Presentation

prs = Presentation()

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 = 'Adding a Bullet Slide'

tf = body_shape.text_frame

tf.text = 'Find the bullet slide layout'

p = tf.add_paragraph()

p.text = 'Use _TextFrame.text for first bullet'

p.level = 1

p = tf.add_paragraph()

p.text = 'Use _TextFrame.add_paragraph() for subsequent bullets'

p.level = 2

prs.save('test.pptx')

add_textbox

from pptx import Presentation

from pptx.util import Inches, Pt

prs = Presentation()

blank_slide_layout = prs.slide_layouts[6]

slide = prs.slides.add_slide(blank_slide_layout)

left = top = width = height = Inches(1)

txBox = slide.shapes.add_textbox(left, top, width, height)

tf = txBox.text_frame

tf.text = "This is text inside a textbox"

p = tf.add_paragraph()

p.text = "This is a second paragraph that's bold"

p.font.bold = True

p = tf.add_paragraph()

p.text = "This is a third paragraph that's big"

p.font.size = Pt(40)

prs.save('test.pptx')

add_picture

from pptx import Presentation

from pptx.util import Inches

img_path = 'monty-truth.png'

prs = Presentation()

blank_slide_layout = prs.slide_layouts[6]

slide = prs.slides.add_slide(blank_slide_layout)

left = top = Inches(1)

pic = slide.shapes.add_picture(img_path, left, top)

left = Inches(5)

height = Inches(5.5)

pic = slide.shapes.add_picture(img_path, left, top, height=height)

prs.save('test.pptx')

add_shape

from pptx import Presentation

from pptx.enum.shapes import MSO_SHAPE

from pptx.util import Inches

prs = Presentation()

title_only_slide_layout = prs.slide_layouts[5]

slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes

shapes.title.text = 'Adding an AutoShape'

left = Inches(0.93) # 0.93" centers this overall set of shapes

top = Inches(3.0)

width = Inches(1.75)

height = Inches(1.0)

shape = shapes.add_shape(MSO_SHAPE.PENTAGON, left, top, width, height)

shape.text = 'Step 1'

left = left + width - Inches(0.4)

width = Inches(2.0) # chevrons need more width for visual balance

for n in range(2, 6):

shape = shapes.add_shape(MSO_SHAPE.CHEVRON, left, top, width, height) shape.text = 'Step %d' % n

left = left + width - Inches(0.4)

prs.save('test.pptx')

## add_table

```python

from pptx import Presentation

from pptx.util import Inches

prs = Presentation()

title_only_slide_layout = prs.slide_layouts[5]

slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes

shapes.title.text = 'Adding a Table'

rows = cols = 2

left = top = Inches(2.0)

width = Inches(6.0)

height = Inches(0.8)

table = shapes.add_table(rows, cols, left, top, width, height).table

# set column widths

table.columns[0].width = Inches(2.0)

table.columns[1].width = Inches(4.0)

# write column headings

table.cell(0, 0).text = 'Foo'

table.cell(0, 1).text = 'Bar'

# write body cells

table.cell(1, 0).text = 'Baz'

table.cell(1, 1).text = 'Qux'

prs.save('test.pptx')

Extract all text from slides in presentation

from pptx import Presentation

prs = Presentation(path_to_presentation)

# text_runs will be populated with a list of strings, # one for each text run in presentation

text_runs = []

for slide in prs.slides:

for shape in slide.shapes:

if not shape.has_text_frame: continue

for paragraph in shape.text_frame.paragraphs: for run in paragraph.runs:

text_runs.append(run.text)

添加一个 slide

SLD_LAYOUT_TITLE_AND_CONTENT = 1

prs = Presentation()

slide_layout = prs.slide_layouts[SLD_LAYOUT_TITLE_AND_CONTENT]

slide = prs.slides.add_slide(slide_layout)

访问幻灯片中的图形

shapes = slide.shapes

自动形状

from pptx.enum.shapes import MSO_SHAPE

shapes = slide.shapes

left = top = width = height = Inches(1.0)

shape = shapes.add_shape(

MSO_SHAPE.ROUNDED_RECTANGLE, left, top, width, height

)

长度单位

from pptx.util import Inches, Pt

length = Inches(1)

length.inches

length.cm

length.pt

length = Pt(72)

形状位置和尺寸

填充

线

调整自动形状

占位符

一个占位符也是一个形状

占位符类型

访问占位符

识别和表征占位符

插入占位符

设置幻灯片标题

文本

文本框

段落

添加文本

应用文本框架级格式

应用段落样式

应用字符样式

图表

添加图表

数据标签

传说

线图

饼图

表格

内容

表格操作

notes slide

Concepts

python快速处理ppt_070 用 Python 处理 PPT 文件相关推荐

  1. Python遍历子目录,利用python-pptx删除ppt文件最后一页

    需求背景 美女同事给了一堆PPT文件,问我能否把快速最后一页删除?先告诉她,当然没问题,在仔细看任务内容,确实所有PPT课件最后一页是广告内容,人工删除还挺费事的,幸好有利器 安装必需组件 pip i ...

  2. python快速编程入门例题-Python快速编程入门,打牢基础必须知道的11个知识点 !...

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  3. python快速编程入门教程-python从入门到精通之30天快速学python视频教程

    python从入门到精通之30天快速学python视频教程 课程目录: python入门教程-1-Python编程语言历史及特性.mkv python入门教程-2-Python编程语言初接触.mkv ...

  4. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程

    用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...

  5. python快速注释html5_P29-30《Python爬虫技术5天速成…》学习过程笔记16(超详细记录)...

    对应原视频 第29集  补充flask(上) & 第30集  补充flask(下): 本篇概要: P29 --flask框架的样子 --创建flask框架后直接运行就报错.测试.解决 --通过 ...

  6. python快速编程答案-100+Python编程题带你快速上手(附答案)

    春节马上就要到了,怎么能让自己在假期里不掉队?今天,给大家准备一个项目: 100+ 编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经 ...

  7. python快速入门 pdf-零起点PYTHON机器学习快速入门 PDF |网盘链接下载|

    资料目录: 第 1 章 从阿尔法狗开始说起1 1.1 阿尔法狗的前世今生.......1 1.2 机器学习是什么.....2 1.3 机器学习大史记.....3 1.4 机器学习经典案例....... ...

  8. python快速编程入门例题-python编程入门知识练习

    python 入门基础知识练习 1编写第一个程序,目前使用的都是python 3 # print('hello world!') 2.查看当前python编辑器的版本号 # python -v 3.使 ...

  9. python做pca图_【教程】组学研究,用python快速实现PCA分析和绘图

    什么是PCA 主成分分析(Principal Component Analysis,PCA)是一种无监督的多元统计分析方法.在蛋白组学和代谢组学研究中能从总体上反应各组样本之间的总体差异和组内样本之间 ...

最新文章

  1. Arxiv 论文提交流程——看这篇就够了
  2. android 36 线程通信
  3. ubuntu18.04安装VCS+verdi错误集锦
  4. centos6中创建软raid方法
  5. 二狗叫你制作千M网线的线序及方法
  6. 论文笔记 - 《Very Deep Convolutional Networks For Large-Scale Image Recognition》 精典
  7. css3 object-fit详解
  8. matplotlib tricks —— 平滑方法
  9. 路由器常见问题及解决办法
  10. mtkwin10驱动_Windows系统MTK手动安装驱动教程(Win10通用)
  11. docker-compose中解决depends_on无效问题
  12. Java:获取map的key和value
  13. Sublime3-打开md-1.1
  14. [微信] 微信商户号 资金解决方案 自动提现 关闭
  15. MATLAB输入、导入方式(手动输入,TXT文件,Excel导入)
  16. 剑指 Offer II 049. 从根节点到叶节点的路径数字之和
  17. Autojs 悟空浏览器
  18. bzoj5314: [Jsoi2018]潜入行动【树形dp】
  19. 丁华锋 机器人_国家重点研发计划“智能机器人”项目在西安交大启动
  20. 里约奥运现并列冠军怎么放国歌

热门文章

  1. 鸿蒙合香丸吃了好吗,合香丸的功效与副作用有哪些 盘点合香丸的两大作用和两大禁忌...
  2. Linux静默安装oracle19c(史上最详细的教学)
  3. MySQL导出csv乱码问题的解决
  4. Live800:智能客服机器人有哪些核心功能?
  5. python-rong-day04
  6. 秋天的怀念(让人精神重新复活的文章)
  7. python3网络爬虫--爬取b站视频评论用户信息(附源码)
  8. 毕业论文查重重复率不达标这样做
  9. jQuery二维码插件生成网页二维码
  10. 三种常见的SQL插入语句