乐于分享
好东西不私藏

Python开发从零开始-50.28-Office 文档处理

Python开发从零开始-50.28-Office 文档处理

接上文Python开发从零开始-50.27-Office 文档处理本文小编与大家分享 Python 处理 Office 文档的相关知识。

(四)python-pptx 库的基本使用

1、创建、打开和保存 PPT 文档

pptx.Presentation() 函数主要用于创建新的 PPT 文档,或者打开已有 PPT 文档。该函数原型为:

Presentation(pptx: str | IO[bytes] | None = None)

参数解释:

  • pptx:多类型参数,可选值包括:

    • 字符串:文件路径名,通常为已有 PPT 文档;

    • 文件流对象(字节数组):可从文件流中加载 PPT 文档数据;

    • 无参或使用 None:基于内置默认模板创建空白演示文稿;

  • 返回值Presentation 对象。

(1)创建默认版式的 PPT 文档

使用无参的 Presentation() 函数可以创建默认版式的 PPT 文档,代码片段如下所示:

from pptx import Presentation# 创建一个新 PPT 文档prs = Presentation()
(2)打开已有 PPT 文档

使用带文件名路径参数的 Presentation() 函数可以打开已有 PPT 文档,代码片段如下所示:

from pptx import Presentation# 打开已有 PPT 文档prs = Presentation('example_create1.pptx')

(3)保存 PPT 文档

如果创建新的 PPT 文档 或者打开已有 PPT 文档,完成相关操作后,需要使用 Presentation 对象的 save() 方法进行保存。该方法的原型如下:

save(file: str | IO[bytes])

参数解释:

file:多类型参数,可选值包括:

  • 文件名路径字符串;

  • 文件流对象(字节数组)。

创建并保存 PPT 文档的代码示例如下:

from pptx import Presentation# 创建一个新 PPT 文档prs = Presentation()# 保存 PPT 文档prs.save('example_create.pptx')

代码执行后,生成 空白 PPT 文档,如下图所示:

2、在 PPT 文档中添加幻灯片

python-pptx 库很多常用对象都不能直接创建,而是通过相关方法获取对象实例,然后再通过获取的对象实例进行操作,所以在实际使用时大量使用链式操作。

小编提示:

在编程语言中,链式操作是一种非常方便且优雅的方式,它允许以连续的方法调用方式来完成多个操作。Python 链式操作的核心指‌方法链(Method Chaining)‌,即方法执行后返回对象本身(self)或新对象,从而支持连续调用。

链式操作的注意事项

  • 连续方法调用必须返回对象自身或新的对象,否则会因返回 None 导致中断;

  • 链式操作单行不超过 3-4 个逻辑步骤,复杂逻辑建议换行或使用括号包裹,以保证可读性;

  • 长链条出错较难定位,建议关键步骤拆分中间变量。

(1)在 PPT 文档中添加幻灯片的分解步骤

对于初学者而言,链式操作往往难以理解连续调用过程中返回的各类对象,为便于大家了解如何在 PPT 文档中添加幻灯片,小编将其链式操作进行拆解,具体步骤如下:

1)获取 PPT 文档的母版对象

① 当 PPT 文档仅一个母版时,可以使用 Presentation 对象的 slide_master 属性获取 PPT 文档的第一个母版对象(SlideMaster 对象)。

# 如果 PPT 文档中只有一个母版,可以直接获取母版对象master = prs.slide_master

② 当 PPT 文档有多个母版时,需要先获取 PPT 文档的母版集合,然后再从母版集合中获取母版对象

可以使用 Presentation 对象的 slide_masters 属性获取 PPT 文档的母版对象集合对象(SlideMasters 对象)。

# 获取 PPT 文档的母版集合masters = prs.slide_masters
可以通过 SlideMasters对象索引,获取母版对象(SlideMaster 对象)。
# 从母版集合对象中获取母版对象master = masters[0]
2)通过母版对象获取幻灯片版式集合对象

可以使用 SlideMaster 对象的 slide_layouts 属性获取获取幻灯片版式集合对象(SlideLayouts 对象)。

# 获取幻灯片版式集合对象layouts = master.slide_layouts

3)从版式集合对象中获取版式对象

可以通过 SlideLayouts 对象索引,获取版式对象SlideLayout 对象)。

# 从版式集合对象中获取版式对象layout = layouts[0]

4)获取 PPT 文档的幻灯片集合

可以使用 Presentation 对象的 slides 属性获取获取幻灯片版式集合对象(Slides 对象)。

# 获取 PPT 文档的幻灯片集合对象slides = prs.slides

5)通过幻灯片集合的添加新幻灯片方法,获得幻灯片对象,并将幻灯片对象与版式对象绑定

Slides 对象的 add_slide() 方法用于添加并返回新幻灯片(Slide 对象。该方法原型为:

add_slide(slide_layout) 

参数解释:

  • slide_layoutSlideLayout 对象,将新幻灯片对象与版式对象绑定;

  • 返回值Slide 对象,返回新幻灯片对象。

添加新幻灯片代码片段示例如下:

# 添加新幻灯片,将新幻灯片对象与版式对象绑定slide = slides.add_slide(layout)

完整的在 PPT 文档中添加幻灯片的分解步骤代码示例如下:

from pptx import Presentation# 创建一个新 PPT 文档prs = Presentation()# 如果 PPT 文档中只有一个母版,可以直接获取母版对象master = prs.slide_master# 获取幻灯片版式集合对象layouts = master.slide_layouts# 从版式集合对象中获取版式对象layout = layouts[0]# 获取 PPT 文档的幻灯片集合对象slides = prs.slides# 添加新幻灯片,将新幻灯片对象与版式对象绑定slide = slides.add_slide(layout)# 保存 PPT 文档prs.save('example_side_create.pptx')

代码执行后,生成的 PPT 文档内容如下图所示: 

受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件‌的相关知识。