学习自动化PPT

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

快速创建PPT

# PPT对象
ppt = Presentation()
# 遍历所有布局
for layout in ppt.slide_layouts:
    # 为该PPT文件添加使用某种布局的幻灯片
    ppt.slides.add_slide(layout)
# 保存PPT文件
ppt.save('./output/show_all_layout.pptx')

向幻灯片中插入文字

ppt = Presentation()

# 幻灯片布局,选择第一种默认布局
slide_layout = ppt.slide_layouts[0]
# slide对象为一页幻灯片,一个PPT文件中可以有多页幻灯片
slide = ppt.slides.add_slide(slide_layout)
# 取本页幻灯片的title占位符
title = slide.shapes.title
# 向 title 文本框中插入文字
title.text = '我是标题'
# 取本页幻灯片的第二个文本框
subtitle = slide.placeholders[1]
# 向第二个文本框插入文字
subtitle.text = '正文框'

# 添加第二页幻灯片,采用不同的布局
slide_layout = ppt.slide_layouts[1]
slide = ppt.slides.add_slide(slide_layout)
# 以同样的方式向第二页幻灯片插入文字
title = slide.shapes.title
title.text = '我是标题2'
subtitle = slide.placeholders[1]
subtitle.text = '正文框2'
ppt.save('./output/write_text.pptx')
  • 还有一种方法是完全它能够给占位符对象向PPT文件插入文字,代码如下:
# 创建PPT对象
ppt = Presentation()
# 选择布局
layout = ppt.slide_layouts[0]
# 添加幻灯片 
slide = ppt.slides.add_slide(layout)
# 获取本幻灯片中所有的占位符 
placeholders = slide.shapes.placeholders
# 插入文字
placeholders[0].text = '第一个文本框'
placeholders[1].text = '第二个文本框'
# 保存文件
ppt.save('./output/write_text2.pptx')
  • 如何将新的文字追加到已有的文字之后呢?
# 读入已存在的PPT文件
ppt = Presentation('./output/write_text.pptx')

#  第一页幻灯片
slide0 = ppt.slides[0]
# 获取第一页幻灯片的所有占位符
placeholder = slide0.shapes.placeholders
# 在第二个占位符对象中添加新段落
new_paragraph = placeholder[1].text_frame.add_paragraph()
# 追加新文字
new_paragraph.text = '追加的新文字'
ppt.save('./output/write_text3.pptx')

向幻灯片中插入新文本框

ppt = Presentation()
# 空白布局
layout = ppt.slide_layouts[6]
# 添加空白布局的幻灯片
slide = ppt.slides.add_slide(layout)
# 预设位置以及大小
# 预设位置以及大小
left = Inches(5)
top = Inches(5)
width = Inches(5)
height = Inches(5)
# left、top为相对位置,width、height为文本框大小
textbox = slide.shapes.add_textbox(left,top,width,height)
textbox.text = '这是一个新的文本框'
# 添加新段落
new_paragraph = textbox.text_frame.add_paragraph()
new_paragraph.text = '文本框中第二段内容'
ppt.save('./output/add_new_text.pptx')

向幻灯片中插入图片

# 实例化 PPT对象
ppt = Presentation()
# 空白布局
layout = ppt.slide_layouts[6]
# 添加幻灯片
slide = ppt.slides.add_slide(layout)
# 定义图片添加的位置
left = Inches(0)
top = Inches(0)
# 定义插入图片的大小
width = Inches(2)
height = Inches(2)
img_path = './input/01.jpg'
# 将图片插入幻灯片
pic = slide.shapes.add_picture(img_path,left,top,width,height)
ppt.save('./output/add_image.pptx')

向幻灯片中插入形状

ppt = Presentation()
layout = ppt.slide_layouts[6]
slide = ppt.slides.add_slide(layout)

# 定义插入形状的位置
left = Inches(1)
top = Inches(2)
# 定义要插入形状的大小
width = Inches(1.8)
height = Inches(1)
# 插入形状
shape = slide.shapes.add_shape(MSO_SHAPE.PENTAGON,left,top,width,height)
# 在形状中添加文字
shape.text = '第一步'

for i in range(2,6):
    # 移动位置
    left = left + width - Inches(0.3)
    # 插入形状
    shape = slide.shapes.add_shape(MSO_SHAPE.CHEVRON,left,top,width,height)
    shape.text = f'第{i}步'
    
ppt.save('./output/add_shape.pptx')
ppt = Presentation()
# 定义插入图片的大小
width = Inches(5)
height = Inches(5)

for member in MSO_SHAPE.__members__:
    try:
        layout = ppt.slide_layouts[6]
        slide = ppt.slides.add_slide(layout)
        # 添加形状
        shape = slide.shapes.add_shape(member.value,left,top,width,height)
        shape.text = member.name
    except:
        # 报错后折行的内容
        print(member.name,member.value)
ppt.save('./output/show_all_layout.pptx')
NO_SYMBOL NO_SYMBOL (19)

插入表格

ppt = Presentation()

layout = ppt.slide_layouts[6]
slide = ppt.slides.add_slide(layout)

rows = 2
cols = 2
left = Inches(3.5)
top = Inches(4.5)
width = Inches(6)
height = Inches(0.8)

# 添加表格,获取表格类
table = slide.shapes.add_table(rows,cols,left,top,width,height).table

# 第一列宽度
table.columns[0].width = Inches(2.0)
# 第二例宽度
table.columns[1].width = Inches(4.0)

table.cell(0,0).text = '第一行第一列'
table.cell(0,1).text = '第一行第二列'
table.cell(1,0).text = '第一行第一列'
table.cell(1,1).text = '第二行第二列'

ppt.save('./output/add_table.pptx')

参考 《Python自动化办公》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据闲逛人

谢谢大嘎喔~ 开心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值