from pptx import Presentation
from pptx.util import Inches
from pptx.enum.shapes import MSO_SHAPE
快速创建PPT
ppt = Presentation()
for layout in ppt.slide_layouts:
ppt.slides.add_slide(layout)
ppt.save('./output/show_all_layout.pptx')
向幻灯片中插入文字
ppt = Presentation()
slide_layout = ppt.slide_layouts[0]
slide = ppt.slides.add_slide(slide_layout)
title = slide.shapes.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 = 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 = 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)
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 = 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自动化办公》