Python自动化办公:使用python-pptx操作PPT段落详解
本文介绍如何利用Python的python-pptx库自动化处理PPT文档中的段落内容。文章详细讲解了如何基于预设布局获取并修改现有段落,如何在段落内添加具有不同样式的多个子段落,以及如何通过自定义文本框(textbox)创建全新的段落对象。内容涵盖关键API调用、样式设置及代码示例,帮助读者掌握PPT自动化生成的核心技巧。
在上一章节中,我们学习了如何定义PPT对象以及设置每一页的基本样式。本节课将深入实际内容添加环节,重点讲解如何利用python-pptx库操作PPT中的段落(Paragraph)。
PPT段落的使用
开始本节课的学习,让我们深入实践。
获取段落
所谓“获取段落”,指的是操作那些已经存在于PPT模板或布局中的现有段落。这些段落通常在设计时就已经被赋予了特定的样式和结构。
第一步:定义PPT对象
首先,我们需要创建一个PPT演示文稿对象。通过调用Presentation()函数实例化一个ppt对象(该函数来自python-pptx库)。
第二步:选择布局样式
接着,我们需要选择一个预定义的幻灯片布局。例如,使用layout = ppt.slide_layouts[1]选择索引为1的布局。通常,布局1包含一个标题占位符(title)和一个内容占位符(段落)。
第三步:插入幻灯片并生成页面
使用ppt.slides.add_slide(layout)函数,将之前选定的layout作为参数传入,即可在PPT中生成一页新的幻灯片。
第四步:获取目标段落
为了修改具体内容,我们需要定位到具体的占位符。通过slide.placeholders[1]获取当前幻灯片中的第二个占位符(索引从0开始,0通常代表标题,1代表内容)。该操作返回一个placeholder对象,它实际上代表了我们要操作的段落容器。
段落添加内容
获取到placeholder对象后,可以通过其text属性直接赋值字符串来修改段落内容。例如:placeholder.text = new content,即可将指定字符串写入该段落。
代码示例如下:
# coding:utf-8
import pptx
ppt = pptx.Presentation() # 生成ppt对象
layout = ppt.slide_layouts[1] # 选择布局 1
slide = ppt.slides.add_slide(layout)
title = slide.placeholders[0] # 获取title
placeholder = slide.placeholders[1] # 获取内容
title.text = "这是title"
placeholder.text = "这是第一行段落内容\n这是第二行段落内容"
ppt.save("test2.ppt")
运行结果如下:


段落中定义多个段落
如果希望段落中的每一行拥有独立的格式样式(如不同的字体、颜色或对齐方式),就需要在段落内部创建多个子段落(sub-paragraphs)。每个子段落可以单独设置样式,从而实现精细控制。接下来演示如何在段落中定义多个子段落。
paragraph = placeholder.text_frame.add_paragraph() # 通过 placeholder.text_frame.add_paragraph() 可以生成一个新的段落对象
通过上述方式生成的段落对象,可以实现以下功能:
| 函数名 | 说明 |
|---|---|
| text | 定义内容 |
| font.bold | 文字加粗 |
| font.italic | 文字斜体 |
| font.size | 字体大小 |
| alignment | 段落位置 |
| color.rgb | 字体颜色 |
| font.underline | 文字下划线 |
代码示例如下:
# coding:utf-8
import pptx
from pptx.util import Pt
from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
ppt = pptx.Presentation() # 生成ppt对象
layout = ppt.slide_layouts[1] # 选择布局 1
slide = ppt.slides.add_slide(layout)
title = slide.placeholders[0] # 获取title
placeholder = slide.placeholders[1] # 获取内容
title.text = "这是title"
# placeholder.text = "这是第一行段落内容\n这是第二行段落内容"
paragraph1 = placeholder.text_frame.add_paragraph() # 定义第一个段落的样式
paragraph1.text = '欢迎学习ppt制作' # 第一个样式段落的内容为 "欢迎学习ppt制作"
paragraph1.font.bold = True # 第一个样式段落的字体为粗体
paragraph1.font.italic = True # 第一个样式段落的字体为斜体
paragraph1.font.size = Pt(16) # 第一个样式段落的字体大小为 16 ;需要 from pptx.util import Pt
paragraph1.font.underline = True # 第一个样式段落的字体有下划线
paragraph1.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中;需 from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
paragraph2 = placeholder.text_frame.add_paragraph() # 定义第二个段落的样式
paragraph2.text = '欢迎学习python' # 第二个样式段落的内容为 "欢迎学习python"
paragraph2.font.size = Pt(32) # 第二个样式段落的字体大小为 32
paragraph2.alignment = PP_PARAGRAPH_ALIGNMENT.RIGHT # 居右
ppt.save("test2.ppt")
运行结果如下:


自定义段落
前文所述的操作均基于PPT模板中已存在的布局占位符。如果当前PPT页面中没有预设的段落占位符,或者我们需要在任意位置自由添加文本,该如何操作?答案是通过自定义文本框(textbox)来创建独立的段落。
我们可以手动定义一个文本框,或者更准确地说,自定义一个段落对象。接下来演示如何创建自定义段落。
box = slide.shapes.add_textbox(left, top, width, height)
使用slide.shapes.add_textbox()方法定义一个文本框对象(box)。
参数说明:left表示文本框左边缘距离幻灯片左侧的距离;top表示文本框上边缘距离顶部的距离;width定义文本框的宽度;height定义文本框的高度。
left与top共同确定文本框在幻灯片上的起始坐标点;width与height共同定义文本框的尺寸大小。
执行该操作后,将返回一个box对象。
paragraph = box.text_frame.add_paragraph()
通过box对象的text_frame属性调用add_paragraph()方法,可以生成一个新的段落对象。
获得该段落对象后,即可按照常规段落对象的方式写入内容并设置样式。
所使用到的新的模块:
- from pptx.util import Inches, Pt:Inches模块用于处理形状添加函数shapes.add_textbox(left, top, width, height)中的坐标和尺寸参数,Pt模块用于设置字体大小。
- from pptx.dml.color import RGBColor:用于定义颜色样式。
- from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT:用于定义段落的对齐方式(如居中、左对齐等)。
代码示例如下:
# coding:utf-8
import pptx
from pptx.util import Pt, Inches
from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
from pptx.dml.color import RGBColor
ppt = pptx.Presentation() # 生成ppt对象
layout = ppt.slide_layouts[1] # 选择布局 1
slide = ppt.slides.add_slide(layout)
title = slide.placeholders[0] # 获取title
placeholder = slide.placeholders[1] # 获取内容
title.text = "这是title"
# placeholder.text = "这是第一行段落内容\n这是第二行段落内容"
paragraph1 = placeholder.text_frame.add_paragraph() # 定义第一个段落的样式
paragraph1.text = '欢迎学习ppt制作' # 第一个样式段落的内容为 "欢迎学习ppt制作"
paragraph1.bold = True # 第一个样式段落的字体为粗体
paragraph1.font.italic = True # 第一个样式段落的字体为斜体
paragraph1.font.size = Pt(16) # 第一个样式段落的字体大小为 16 ;需要 from pptx.util import Pt
paragraph1.font.underline = True # 第一个样式段落的字体有下划线
paragraph1.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中;需 from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
paragraph2 = placeholder.text_frame.add_paragraph() # 定义第二个段落的样式
paragraph2.text = '欢迎学习python' # 第二个样式段落的内容为 "欢迎学习python"
paragraph2.font.size = Pt(32) # 第二个样式段落的字体大小为 32
paragraph2.alignment = PP_PARAGRAPH_ALIGNMENT.RIGHT # 居右
layout = ppt.slide_layouts[6] # 定义布局,使用样式 6 (样式6 只有一个title)
slide = ppt.slides.add_slide(layout)
left = top = width = height = Inches(5) # 定义 box 对象的位置与宽高
box = slide.shapes.add_textbox(left, top, width, height) # 实例化一个 box 对象
para = box.text_frame.add_paragraph() # 定义一个段落对象
para.text = 'this is a para test' # 自定义段落对象写入段落内容
para.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中
para.font.size = Pt(38) # 设置字体大小
para.font.color.rgb = RGBColor(255, 0, 0) # 设置颜色
para.font.name = '微软雅黑' # 设置字体
ppt.save("test2.ppt")
运行结果如下:


至此,关于Python自动化办公中PPT段落使用的介绍已完成。如需了解更多Python操作PPT的相关内容,请查阅本站往期文章或继续阅读后续教程。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













