Python自动化办公:使用python-pptx操作PPT段落详解

阿橙
阿橙
发布时间:2026-10-12| 4人浏览过
原创

本文介绍如何利用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的相关内容,请查阅本站往期文章或继续阅读后续教程。感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。