对象关系汇总
目标
来一个幻灯片的生成
安装模块
pip install python-pptx
认识三个对象
import pptx
# ppt文档对象
ppt = pptx.Presentation()
# 幻灯片容器
slides = ppt.slides
# 获得一个版式
page = ppt.slide_layouts[1]
slide_layouts[1]为带标题和正文框的ppt,slide_layouts[6]为空白页ppt
演示文档容器添加一页
import pptx
# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
print(len(slides))
slides.add_slide(layout1)
print(len(slides))
文件的保存
ppt.save('test.pptx')
版式为2时
import pptx
# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[2]
# 容器添加一个版式
print(len(slides))
slides.add_slide(layout1)
print(len(slides))
ppt.save('test2.pptx')
版式的规律寻找
对着演示来看,一共十一个
我们试试序号七的结构,验证一下猜测
版式七的效果
与猜测相符
获得所有的文本框
版式一有两个占位符
占位符添加内容
import pptx
# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
page = slides.add_slide(layout1)
# 获得所有的占位符
placeholders = page.shapes.placeholders
# 给占位符添加内容
placeholders[0].text = '这是标题的位置'
placeholders[1].text = '这是正文的内容/n可以吗'
ppt.save('test1.pptx')
标题是一个占位符
标题占位符的两种对象获取方式
文本框对象与段落对象
占位符对象具有文本框对象
文本框里面可以有多个段落
让正文占位符里有多个文本对象
import pptx
from pptx.util import Pt
# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
page = slides.add_slide(layout1)
# 获得所有的占位符
placeholders = page.shapes.placeholders
# 给占位符添加内容
placeholders[0].text = '这是标题的位置'
placeholders[1].text = '这是正文的内容'
# 文本框对象(占位符一的)
text_frame = placeholders[1].text_frame
# 段落对象(文本框的)
paragraph = text_frame.add_paragraph()
paragraph2 = text_frame.add_paragraph()
# 给段落对象添加内容
paragraph.text = '第一个段落内容'
paragraph2.text = '第二个段落内容'
# 段落的样式
paragraph.font.bold = True
paragraph2.font.size = Pt(15)
paragraph2.font.underline = True
ppt.save('test1.pptx')
文本框对象的演练
代码
import pptx
# ppt文档对象
from pptx.util import Pt, Inches
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
page = slides.add_slide(layout1)
# 获得所有的占位符
placeholders = page.shapes.placeholders
# 给占位符添加内容
placeholders[0].text = '这是标题的位置'
placeholders[1].text = '这是正文的内容'
# 文本框对象(占位符一的)
text_frame = placeholders[1].text_frame
# 段落对象(文本框的)
paragraph = text_frame.add_paragraph()
paragraph2 = text_frame.add_paragraph()
# 给段落对象添加内容
paragraph.text = '第一个段落内容'
paragraph2.text = '第二个段落内容'
# 段落的样式
paragraph.font.bold = True
paragraph2.font.size = Pt(15)
paragraph2.font.underline = True
# 文本框对象
left = Inches(6) # 左
top = Inches(2) # 顶
width = Inches(4) # 宽
height = Inches(4) # 高
textbox = page.shapes.add_textbox(left,top,width,height)
# 文本框的内容
# textbox.text = "这是文本框的内容这是文本框的内容这是文本框的内容"
# 文本框的段落
para = textbox.text_frame.add_paragraph()
para.text = "文本框的段落内容文本框的段落内容文本框的段落内容文本框的段落内容"
ppt.save('test222.pptx')
存在的问题
虽然给文本框设定了一个宽度和高度,但是里面的内容仍然会超出它的边界,这个问题需要解决