Python-pptx模块实战:PPT自动化创建、元素操作与批量提取指南

远山来客
远山来客
发布时间:2026-10-12 | 2人浏览过
原创

本文详解Python-pptx模块在PPT自动化中的应用。从创建演示文稿、添加指定布局幻灯片,到操作文本框、表格等形状及占位符,提供完整代码示例。重点介绍如何批量提取PPT文本与表格数据,实现Word转PPT等繁琐操作的自动化,提升办公效率。

凭借出色的可视化表现与演示效果,PPT已成为职场人士必备的核心技能。PPT设计涵盖技巧与操作规范,已形成专门的知识体系与课程。

本文聚焦利用Python操作PPT文件的技巧。编程的核心优势在于处理速度,对于追求高水准设计的PPT,仍需“以人为本”。因此,该模块主要适用于PPT基本元素的提取与添加场景,特别适合处理大量内容转化(如Word转PPT),以替代繁琐的人工操作。尽管模块提供基础样式,但尚难完全满足日常办公对PPT美观度的高标准要求。

在该模块中,PPT被拆解为以下多个层级元素:

1. presentations,代表整个PPT文档对象。

2. slides,代表PPT文档中的每一页幻灯片。

3. shapes,表示页面中的形状容器。

4. placeholders,表示页面中的占位符元素。

上述分类对应的常用操作如下:

1. presentations

主要用于打开、创建及保存PPT文档,具体用法见代码示例。

>>> from pptx import Presentation
# 创建新的ppt文档
>>> prs = Presentation()
# 打开一个ppt文档
>>> prs = Presentation('input.pptx')
# 保存ppt文档
>>> prs.save('test.pptx')

2. slides

在创建新幻灯片时,需指定对应的布局。该模块内置了以下9种标准布局:

1. Title(标题幻灯片)

2. Title and Content(标题和内容)

3. Section Header(章节标题)

4. Two Content(双内容)

5. Comparison(对比)

6. Title Only(仅标题)

7. Blank(空白)

8. Content with Caption(带标题的内容)

9. Picture with Caption(带标题的图片)

可通过数字下标0到9访问上述布局,指定布局添加一页PPT的用法见代码示例。

>>> title_slide_layout = prs.slide_layouts[0]
>>> slide = prs.slides.add_slide(title_slide_layout)

3. shapes

shapes表示容器,制作PPT时,文本框、表格、图片等基本元素均占据PPT的一个部分、矩形区域或其他自定义形状。shapes是所有基本元素的集合,通过以下方式可访问对应的shapes对象。

shapes = slide.shapes

对于shapes对象,我们可以获取和设置其各种属性,其中最常用的是text属性,用法见代码示例。

>>> shapes.text = 'hello world'

此外,还可通过add系列方法添加各种元素,添加文本框的具体用法见代码示例。

>>> from pptx.util import Inches, Pt
>>> left = top = width = height = Inches(1)
>>> txBox = slide.shapes.add_textbox(left, top, width, height)
>>> tf = txBox.text_frame
>>> tf.text = "first paragraph"
>>> p = tf.add_paragraph()
>>> p.text = "second paragraph"

添加表格的具体用法见代码示例。

>>> rows = cols = 2
>>> left = top = Inches(2.0)
>>> width = Inches(6.0)
>>> height = Inches(0.8)
>>> table = shapes.add_table(rows, cols, left, top, width, height).table
>>> table.columns[0].width = Inches(2.0)
>>> table.columns[1].width = Inches(4.0)
>>> # write column headings
>>> table.cell(0, 0).text = 'Foo'
>>> table.cell(0, 1).text = 'Bar'

4. placeholders

shapes表示所有基本元素的总和,而placeholders则表示页面上每一个具体的预设元素。因此,placeholders是shapes的子集,通过数字下标可访问对应的placeholder,用法见代码示例。

>>> slide.placeholders[1]
<pptx.shapes.placeholder.SlidePlaceholder object at 0x03F73A90>
>>> slide.placeholders[1].placeholder_format.idx
1
>>> slide.placeholders[1].name
'Subtitle 2'

placeholders是页面上已有的元素,获取对应的placeholders之后,可以通过insert系列方法来向其中新添元素。

了解上述层级结构,有助于我们对PPT进行读写操作。除了写操作之外,也可以通过读操作来批量提取PPT中的特定元素。以文字为例,提取方式见代码示例。

from pptx import Presentation
 
prs = Presentation(path_to_presentation)
 
text_runs = []
 
for slide in prs.slides:
 for shape in slide.shapes:
  if not shape.has_text_frame:
   continue
  for paragraph in shape.text_frame.paragraphs:
   for run in paragraph.runs:
    text_runs.append(run.text)

通过该模块,可以快速搭建PPT的基本框架,也可以批量提取PPT中的特定元素,例如提取文字转换成Word,或者提取表格转换成Excel文件。总而言之,该模块适合替代大量繁琐的人工复制粘贴操作。

到此这篇关于通过python-pptx模块操作PPT文件的方法的文章就介绍到这了,更多相关python-pptx模块操作PPT文件内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表