利用python-pptx库读写操作PPT,批量自动生成或修改的PPT

2019/11 30 18:11
阅读(5763)

python的python-pptx库是一个优秀的读写PPT的库,可以建新建PPT及打开本地电脑上已经的的PPT。可以向PPT里增加各种元素、设置、调整格式,提取PPT里的文字等等。但同时又由于PPT的个性化比较高,批量生成制作的可能性比较小,所以在网上留下的详细教程不多。本节根据 python-pptx 0.6.18文档 整理,作了相关的备注。(备注:不支持.ppt拓展名的文件)

先来一些python-pptx库名词释义:

Presentation:演示,可以理解为powerpoint程序
slides:所有的幻灯片
slide:单张幻灯片
layouts:布局
slide_layouts:幻灯片布局
textbox:文本框
text_frame:文本框
paragraph:段落
add_paragraph:添加段落
enum:枚举,列举
bullet_slide_layout:项目符号幻灯片布局
title_slide_layout:标题幻灯片版式
prs.slide_layouts是演示文稿中包含的幻灯片布局的集合
prs.slides是演示文稿中幻灯片的集合
slide_masters:幻灯片母版

特别说明一下,幻灯片布局的样式( slide_layouts ):

slide_layouts布局样式

python-pptx的使用实例:

1、新建一个PPT并添加文本框及文字:

 
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
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 add_paragraph that's bold"
#给新添加的段落文字设置为粗体
p.font.bold=True
#再在这个文本框中新建一个段落
p=tf.add_paragraph()
#设置新段落的文字
p.text="This is a third paragraph that's big"
#设置新添加的段落文字的字号为40
p.font.size=Pt(40)
#保存新建的PPT。
prs.save(r'C:/Users/Administrator/Desktop/test.pptx')

2、新建一个PPT并在PPT中添加一个图片:

 
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Inches,Pt

#要添加图片的路径
img_path=r'C:/Users/Administrator/Desktop/图片2.png'
#实例化一个PPT
prs=Presentation()
#设置要新建的PPT的样式
blank_slide_layout=prs.slide_layouts[6]
#根据设置的PPT布局样式新建一张空白的PPT
slide=prs.slides.add_slide(blank_slide_layout)
#设置图片的添加位置,以英寸为单位
left=top=Inches(1)
#在新建的PPT里添加指定的图片,到指定的位置
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)
#保存新建的PPT。
prs.save(r'C:/Users/Administrator/Desktop/test.pptx')

3、 新建幻灯片并添加形状 :

 
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Inches,Pt

#实例化一个PPT
prs=Presentation()
#设置新建PPT的布局样式:仅标题幻灯片版式
title_only_slide_layout=prs.slide_layouts[5]
#根据指定样式新建一张PPT,
slide=prs.slides.add_slide(title_only_slide_layout)
#把新建PPT中的所有形状对象shapes赋值给变量shapes
shapes=slide.shapes
#设置标题的文字
shapes.title.text='Adding an AutoShape'
#设置下面新建形状距所在页PPT左边的位置
left=Inches(0.93)
#设置下面新建形状距所在页PPT顶商的位置
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'
#设置下面新建V形距左边的位置,0.4是V形的深度
left=left+width-Inches(0.4)
#设置新建V形的宽度
width=Inches(2.0)
#通过循环创建4个V形形状
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)
#保存新建的PPT。
prs.save(r'C:/Users/Administrator/Desktop/test.pptx')

4、新建PPT并添加一个表格:

 
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Inches,Pt

#实例化一个PPT
prs=Presentation()
#设置将要新建的幻灯片版式
title_only_slide_layout=prs.slide_layouts[5]
#根据上面版式新建一张PPT
slide=prs.slides.add_slide(title_only_slide_layout)
#把新建PPT中所有的形状集合赋值给变量shapes
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
#重新调整每列的宽度
table.columns[0].width=Inches(2.0)
table.columns[1].widht=Inches(4.0)

#设置表头的文字
table.cell(0,0).text='Foo'
table.cell(0,1).text='Bar'

#设置表体单元格里的文字
table.cell(1,0).text='Baz'
table.cell(1,1).text='Qux'
#保存新建的PPT。
prs.save(r'C:/Users/Administrator/Desktop/test.pptx')

上面是python-pptx几个常用的基本操作,后续会结合实际实例再跟大家分享。

o郭二爷o原创或整理--转载请注明: http://www.dszhp.com/python-pptx.html

发表回复

欢迎回来 (打开)

(必填)