python 占位符_详解Python操作PPT的各种骚操作!

25b0d3b13d7415b1b32b5f32954ae730.png

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

  • 可以创建、修改ppt(.pptx)文件
  • 需要单独安装,不包含在Python标准模块里

2、模块的安装与导入1)模块的安装
“Windows用户命令行下输入”
PIP安装python-pptx
“mac用户命令行下输入”
PIP 3安装python-pptx2)模块的导入
这里有一点需要注意的是:安装的库是python-pptx,但是导入的时候却有点不同.进口pptx3、python读取ppt文档中的内容1)PPT的结构说明
在使用python操作ppt之前,首先应该清楚ppt的结构,这个对于之后代码的编写很有帮助.2)获取滑动从…pptx进口展示
PRS=演示文稿(“统计学习方法PPT.pptx”)滑梯在……里面幻灯片:
打印(幻灯片)
结果如下:3)获取形状形状进口pptx从…pptx进口展示
PRS=演示文稿(“统计学习方法PPT.pptx”)滑梯在……里面幻灯片:形形在……里面滑块形状:
打印(形状)
"""
注意:这里得到的Shape对象,并不能看出什么,接着往下看.
"""
结果如下:4)判断每个形状中是否存在文字

  • Shape.had_text_framework:是否有文字
  • Shape.text_framework:获取文字框

进口pptx从…pptx进口展示
PRS=演示文稿(“统计学习方法PPT.pptx”)滑梯在……里面幻灯片:形形在……里面滑块形状:如果Shape.had_text_framework:
文本帧=shape.text_framework
打印(Text_Fra.text)
结果如下:5)获取某一页幻灯片中的内容进口pptx从…pptx进口展示
PRS=演示文稿(“统计学习方法PPT.pptx”)我,滑梯在……里面列举(幻灯片):如果I=5:形形在……里面滑块形状:如果Shape.had_text_framework:
文本帧=shape.text_framework
打印(Text_Fra.text)
结果如下:6)获取形状中的某个段落进口pptx从…pptx进口展示
PRS=演示文稿(“统计学习方法PPT.pptx”)我,滑梯在……里面列举(幻灯片):如果I=5:形形在……里面滑块形状:如果Shape.had_text_framework:
文本帧=shape.text_framework段落在……里面案文框架.段落:
印刷(案文)
"""
注意:该方法和上述4)中的方法一摸一样.上述方法是直接获取Shpae中的文字内容;
下面这个更灵活,先获取每个形状,然后在获取每个形状中的段落;
下面方式更好:因为我们可以针对段,写一个判断条件,只获取第几个段;
"""
结果如下:4、利用python像ppt中写入内容1)幻灯片模板及占位符的概念2)怎么自定义母版?3)什么是版式?
这个概念在下面的效果中,会得以体现.其中_表示获取的是第二个版式,以此类推下去[]传入0表示获取的是第一个版式,传入1表示获取的是第二个版式,以此类推下去.4)添加幻灯片和内容
这里就需要使用上述的自定义母版.因为毕竟是使用python操作PPT,我们可以定义好自己想要展示的PPT母版,然后借助代码完成PPT的内容写入操作.1占位符id的确认进口pptx从…pptx进口展示
PRS=演示文稿(“空白.pptx”)
表示的是ppt中不同的版式
幻灯片=幻灯片。添加_幻灯片(prs.幻灯片_布局[0])形形在……里面幻灯片.占位符:
Pff=shape.占位符格式
打印(f“{phf.idx}--{shape.name}--{phf.type}”)
Shape.text=f“{phf.idx}--{shape.name}--{phf.type}”
#注意:做完这个操作,一定要记得保存一下!
保存(“电子奖状模板.pptx”)
"""
上述打印结果如下:
0--标题1--标题(1)这个表示标题占位符,id为0
图片占位符2-图片(18)这个表示图片占位符,id为13
14-文本占位符3-主体(2)这个表示正文内容占位符,id为14
15--文本占位符4--主体(2)这个表示正文内容占位符,id为15
我们一定要先知道每个空格的占位符id,才可以进行下面内容的填充.
"""
效果如下:2 PPT内容的填写进口pptx从…pptx进口展示
PRS=演示文稿(“空白.pptx”)
幻灯片=幻灯片。添加_幻灯片(prs.幻灯片_布局[0])
名称=幻灯片.占位符[14]
为什么=幻灯片.占位符[15]
Name.text=“黄同学”
Why.text=“学习太积极”
保存(“内容填充.pptx”)
效果如下:5)添加段落1占位符id的确认进口pptx从…pptx进口展示
PRS=演示(“Finall.pptx”)
幻灯片=幻灯片。添加_幻灯片(prs.幻灯片_布局[0])形形在……里面幻灯片.占位符:
Pff=shape.占位符格式
打印(f“{phf.idx}--{shape.name}--{phf.type}”)
Shape.text=f“{phf.idx}--{shape.name}--{phf.type}”
Print(“---”)
幻灯片=幻灯片。添加_幻灯片[1]形形在……里面幻灯片.占位符:
Pff=shape.占位符格式
打印(f“{phf.idx}--{shape.name}--{phf.type}”)
Shape.text=f“{phf.idx}--{shape.name}--{phf.type}”
保存(“哈哈.pptx”)
效果如下:2段落的添加进口pptx从…pptx进口展示
PRS=演示(“Finall.pptx”)
幻灯片=幻灯片。添加_幻灯片(prs.幻灯片_布局[0])
名称=幻灯片.占位符[14]
为什么=幻灯片.占位符[15]
Name.text=“黄同学”
Why.text=“学习太积极”
# --------------------------------------------------- #
Prs 1=演示(“finall.pptx”)
幻灯片1=prs.幻灯片.Add_幻灯片[1]
形状=滑块
Title_Shape=shapes.title#这句代码可以改为Title_Shape=shapes.占位符[0]
体形=形状.占位符[1]
Title_shape.text=“这是一个标题”
Tf=身体形状.文本框架
#这句代码就是给Body占位符添加内容!
Tf.text=“带圆点的符号1”
P=tf.add_段()
#这个代码表示在原来的基础上,添加第一个段落!
P.text=“带圆点的符号2”
P=tf.add_段()
#这个代码表示在原来的基础上,添加第二个段落!
P.text=“带圆点的符号3”
保存(“嘿嘿.pptx”)
效果如下:3给段落设定层级关系进口pptx从…pptx进口展示
PRS=演示(“Finall.pptx”)
幻灯片=幻灯片。添加_幻灯片(prs.幻灯片_布局[0])
名称=幻灯片.占位符[14]
为什么=幻灯片.占位符[15]
Name.text=“黄同学”
Why.text=“学习太积极”
# --------------------------------------------------- #
Prs 1=演示(“finall.pptx”)
幻灯片1=prs.幻灯片.Add_幻灯片[1]
形状=滑块
Title_Shape=shapes.title#这句代码可以改为Title_Shape=shapes.占位符[0]
体形=形状.占位符[1]
Title_shape.text=“这是一个标题”
Tf=身体形状.文本框架
Tf.text=“带圆点的符号1”
P=tf.add_段()
P.text=“带圆点的符号2”
#原始内容的层级相当于是0,因此这个段落我设置为层级1,下面的段落设置为层级2
P级=1
P=tf.add_段()
P.text=“带圆点的符号3”
P级=2
保存(“嘻嘻.pptx”)
效果如下:4添加一个文本框

  • 滑块.shapes.add_textbox(左、顶、宽、高)

从…pptx进口展示从…Pptx.util进口厘米,铂
PRS=列报()
#使用第一个版式
黑色幻灯片布局=PRS.幻灯片布局[0]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶=宽=高=厘米(3)
文本框=幻灯片.shapes.add_textbox(左、顶、宽、高)
TF=Text_box.Text_Frame
Tf.text=“这是一段文本框里面的文字”
P=tf.add_段()
P.text=“这是第二段文字,加粗,字号40”
P.font.粗体=千真万确
P.font.size=Pt(40)
保存(“添加一个文本框0.pptx”)
效果如下:

8df6a4229e785e0e357809605ce8013a.png

5添加一个图片

  • 幻灯片.shapes.add_画面(图片路径,距离左边,距离顶端,宽度,高度)

第一种展示:从…pptx进口展示从…Pptx.util进口厘米
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶部=厘米(3)
PIC=幻灯片.shapes.add_画面(“孙悟空.png”,左,顶)
保存(“添加图片1.pptx”)
效果如下:
第二种展示:从…pptx进口展示从…Pptx.util进口厘米
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶部=厘米(3)
高度=厘米(5.5)
PIC=幻灯片.shapes.add_画面(“孙悟空.png”,左,顶,高=高)
保存(“添加图片2.pptx”)
效果如下:

43bf8d9d4c8adbd721e06c8ccf617c61.png

6添加表格

  • Shapes.add_table(行、科尔、左、顶、宽、高)

从…pptx进口展示从…Pptx.util进口厘米,铂
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
形状=滑动。
行,科尔=5,3
左=顶部=厘米(5)
宽度=厘米(18)
高度=厘米(3)
TABLE=shapes.add_table(行、科尔、左、顶、宽、高)。
表格[0].宽度=厘米(6)
表格[1].宽度=厘米(2)
表格[2].宽度=厘米(2)
表.行[0].高=厘米(2)
数据=[
[“姓名”,“性别”,“成绩”],
[“张三”,“男”,96],
[“李四”,“女”,87],
[“王五”,“女”,90],
[“赵六”,“男”,78]
]在……里面范围(行):科勒在……里面范围(中校):
Text=str(data[row][coll])
保存(“插入表格.pptx”)
结果如下:

e089c1fb7f6f6a121012f92ce02ec013.png

5、PPT文档内容样式批量调整1)文本框位置的调整
上面我们已经知道怎么添加文本框,现在我们需要做的就是,怎么调整文本框的位置.从…pptx进口展示从…Pptx.util进口厘米,铂从…Pptx.enum.text进口MSO_锚,MSO_自动尺寸
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶=宽=高=厘米(3)
文本框=幻灯片.shapes.add_textbox(左、顶、宽、高)
TF=Text_box.Text_Frame
Tf.text=“这是一段文本框里面的文字”
# ----------------------------------------- #
边缘底部=cm(0.1)#下边距
页边距左=0#下边距
#一定要导入MSO_锚这个库
垂直锚=MSO_ANCHOR.BOTTOM#对齐文本方式:底端对齐
Tf.word_WORE=千真万确#框中的文字自动换行
保存(“文本框样式的调整.pptx”)
结果如下:2)文本框背景颜色调整从…pptx进口展示从…Pptx.util进口厘米,铂从…Pptx.enum.text进口MSO_锚,MSO_自动尺寸从…Pptx.dml.color进口RGB颜色
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶=宽=高=厘米(3)
文本框=幻灯片.shapes.add_textbox(左、顶、宽、高)
TF=Text_box.Text_Frame
Tf.text=“这是一段文本框里面的文字”
# -------------------------------------- #
边缘底部=cm(0.1)#下边距
页边距左=0#下边距
垂直锚=MSO_ANCHOR.BOTTOM
Tf.word_WORE=千真万确#框中的文字自动换行
# -------------------------------------- #
填充=文本框。
填充.固体()
#使用之前一定要导入RGB彩色这个库
填色(247,150,70)
保存(“文本框背景色的调整.pptx”)
结果如下:3)文本框边框样式调整从…pptx进口展示从…Pptx.util进口厘米,铂从…Pptx.enum.text进口MSO_锚,MSO_自动尺寸从…Pptx.dml.color进口RGB颜色
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶=宽=高=厘米(3)
文本框=幻灯片.shapes.add_textbox(左、顶、宽、高)
TF=Text_box.Text_Frame
Tf.text=“这是一段文本框里面的文字”
# -------------------------------------- #
边缘底部=cm(0.1)#下边距
页边距左=0#下边距
垂直锚=MSO_ANCHOR.BOTTOM
Tf.word_WORE=千真万确#框中的文字自动换行
# -------------------------------------- #
填充=文本框。
填充.固体()
#使用之前一定要导入RGB彩色这个库
填色(247,150,70)
# -------------------------------------- #
Line=text_box.line
Line.chro.rgb=RGBColor(255,0,0)
线宽=厘米(0.3)
保存(“文本框边框样式调整.pptx”)
结果如下:

bd6b7241c14dd5fcfa0a4e4caa1bcb04.png

4)段落对其调整从…pptx进口展示从…Pptx.enum.text进口PP对齐
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶=宽=高=厘米(3)
文本框=幻灯片.shapes.add_textbox(左、顶、宽、高)
TF=Text_box.Text_Frame
# ---------------------------- #
P=tf.add_段()
P.text=“这是第二段文字”
对齐=PP_ALIGN.LEFT
保存(“段落对其调整.pptx”)
当然这里还有一些其他样式的调整,和Word很类似,就不一一叙述了.5)字体样式调整
代码如下:从…pptx进口展示从…Pptx.util进口厘米,铂从…Pptx.enum.text进口MSO_锚,MSO_自动尺寸从…Pptx.dml.color进口RGB颜色从…Pptx.enum.text进口PP对齐
PRS=列报()
#使用第七个版式
黑色幻灯片布局=PRS.幻灯片布局[6]
幻灯片=幻灯片。添加幻灯片(黑色幻灯片布局)
左=顶=宽=高=厘米(3)
文本框=幻灯片.shapes.add_textbox(左、顶、宽、高)
TF=Text_box.Text_Frame
# ---------------------------- #
P=tf.add_段()
P.text=“这是第二段文字”
对齐=PP_ALIGN.LEFT
# ------------------------------------- #
P.font.粗体=千真万确
P.font.name=“宋体”
Rgb=RGBColor(247,150,70)
P.font.size=Pt(30)
保存(“字体样式调整.pptx”)