乐趣Python——办公魔法:PPT文件自动化

Python操作PPT:Python-pptx库的使用详解

Python 是一种强大而灵活的编程语言,其强大之处之一就是拥有丰富的第三方库,来帮助我们解决各种问题。在这篇文章中,我们将关注 Python-pptx,这是一个可以让我们对 PPT 文件进行操作的库。接下来我们将按照功能进行逐一讲解。

PPT库的安装

在 Python 中使用 PPT 功能之前,我们需要先确保已经成功安装了 python-pptx。如果没有,可以通过 pip 进行简单快捷的安装:

python 复制代码
pip install python-pptx

PowerPoint文档的创建和保存

创建新的 PowerPoint 文档和保存已修改的文档都十分简单。使用 PowerPoint() 函数创建新的空白 PPT 文件,这将返回一个 Presentation 对象。保存只需调用对象的 save() 方法。

python 复制代码
from pptx import Presentation
ppt = Presentation()
ppt.save('test_ppt.pptx')

以上代码会在你的代码文件目录下创建一个空白的 ppt 文件。

幻灯片的添加和删除

在 python-pptx 中,添加新的幻灯片到 Presentation 对象十分简单,只需要调用 add_slide() 方法。

python 复制代码
from pptx import Presentation
from pptx.util import Inches

ppt = Presentation()
slide_layout = ppt.slide_layouts[0]

# 添加第一页幻灯片
slide = ppt.slides.add_slide(slide_layout)

# 这里可以添加内容到第一页幻灯片

# 添加第二页幻灯片
slide = ppt.slides.add_slide(slide_layout)

# 这里可以添加内容到第二页幻灯片

# 保存PPT文件
ppt.save('test_ppt.pptx')

以上代码会在 PPT 中添加一个新的幻灯片。

文本框的插入和编辑

我们也可以在幻灯片中添加文本框。 这可以通过在 Slide 对象上调用 add_textbox() 方法来实现。 下面是一个示例:

python 复制代码
from pptx import Presentation
from pptx.util import Inches

# 创建一个新的PPT对象
ppt = Presentation()

# 添加一个新的幻灯片
slide = ppt.slides.add_slide(ppt.slide_layouts[5]) 

# 定义文本框的位置和大小
left = top = Inches(1)
width = height = Inches(5)

# 在幻灯片上添加文本框
txBox = slide.shapes.add_textbox(left, top, width, height)

# 获取文本框的文本框对象
tf = txBox.text_frame

# 设置文本框的文本内容
tf.text = "你好, Python-pptx!"

# 保存PPT文件
ppt.save('test_ppt.pptx')

这段代码使用了Python的pptx库来创建一个PPT文件,并在其中添加了一个新的幻灯片。让我解释一下代码的每一部分: from pptx import Presentation: 这行代码导入了pptx库中的Presentation类,用于创建PPT文件。 from pptx.util import Inches: 这行代码导入了Inches类,用于指定尺寸单位为英寸。

接下来是代码的主要部分:

ppt = Presentation(): 这行代码创建了一个空的PPT对象,即一个新的PPT文件。

slide = ppt.slides.add_slide(ppt.slide_layouts[5]): 这行代码创建了一个新的幻灯片,并使用ppt.slide_layouts[5]来指定幻灯片的布局。在这个例子中,使用的是索引为5的布局,具体的布局样式可以根据你的需要进行调整。

left = top = Inches(1): 这行代码定义了文本框的左上角位置,单位为英寸。在这个例子中,左上角位置被设置为(1, 1)。

width = height = Inches(5): 这行代码定义了文本框的宽度和高度,单位为英寸。在这个例子中,文本框的宽度和高度都被设置为5英寸。

txBox = slide.shapes.add_textbox(left, top, width, height): 这行代码创建了一个文本框,并将其添加到幻灯片中,位置和大小由前面定义的变量决定。

tf = txBox.text_frame: 这行代码获取文本框的文本框对象。

tf.text = "你好, Python-pptx!": 这行代码设置文本框中的文本内容为"你好, Python-pptx!"。

最后一行代码是保存PPT文件的操作:

ppt.save('test_ppt.pptx'): 这行代码将PPT对象保存为一个PPT文件,文件名为'test_ppt.pptx'。

形状、图片和图表的插入和编辑

插入形状

python 复制代码
from pptx import Presentation
from pptx.util import Inches

# 创建一个新的PPT对象
ppt = Presentation()

# 添加一个新的幻灯片
slide = ppt.slides.add_slide(ppt.slide_layouts[5])

# 定义形状的位置和大小
left = Inches(1)
top = Inches(1)
width = Inches(1)
height = Inches(1)

# 在幻灯片上添加形状
shape = slide.shapes.add_shape(1, left, top, width, height)

# 保存PPT文件
ppt.save('test_ppt.pptx')

这段代码创建了一个新的PPT文件,并在其中添加了一个新的幻灯片。 然后,它定义了一个形状的位置和大小,并将该形状添加到幻灯片上。 最后,它将PPT文件保存为'test_ppt.pptx'。

插入图片

python 复制代码
from pptx import Presentation
from pptx.util import Inches

# 创建一个新的PPT对象
ppt = Presentation()

# 添加一个新的幻灯片
slide = ppt.slides.add_slide(ppt.slide_layouts[0])

# 获取第一张幻灯片
slide = ppt.slides[0]

# 定义图片的位置和大小
left = Inches(1)
top = Inches(1)
height = Inches(1)

# 在幻灯片上添加图片
pic = slide.shapes.add_picture("image.jpg", left, top, height=height)

# 保存PPT文件
ppt.save('test_ppt.pptx')

这段代码创建了一个新的 PPT 文件,并获取了第一张幻灯片。然后,它定义了图片的位置和大小,并将指定的图片添加到幻灯片上。最后,它将PPT文件保存为 'test_ppt.pptx'。

幻灯片布局和主题的应用

python 复制代码
from pptx import Presentation

# 创建一个新的PPT对象
ppt = Presentation()

# 选择幻灯片布局
slide_layout = ppt.slide_layouts[1]

# 添加一个新的幻灯片
slide = ppt.slides.add_slide(slide_layout)

# 保存PPT文件
ppt.save('test_ppt.pptx')

每个项目在 slide_layouts 集合中的索引都代表了一个特定的布局。

表格的添加和操作

python 复制代码
from pptx import Presentation
from pptx.util import Inches

# 创建一个新的PPT对象
ppt = Presentation()

# 添加一个新的幻灯片,并选择索引为5的幻灯片布局
slide = ppt.slides.add_slide(ppt.slide_layouts[5])

# 定义表格的行数、列数、位置和大小
rows, cols = 2, 2
left, top, width, height = Inches(2), Inches(2), Inches(6), Inches(0.8)

# 在幻灯片上添加表格
table = slide.shapes.add_table(rows, cols, left, top, width, height).table

# 遍历表格的每个单元格,并填入相应的文本
for r in range(rows):
    for c in range(cols):
        table.cell(r, c).text = f"({r},{c})"

# 保存PPT文件
ppt.save('test_ppt.pptx')

这段代码创建了一个新的PPT文件,并添加了一个新的幻灯片。 然后,它在幻灯片上添加了一个2x2的表格,并使用嵌套的循环遍历表格的每个单元格。在每个单元格中,它填入了相应的文本,格式为(行号, 列号)。 最后,它将PPT文件保存为'test_ppt.pptx'。

超链接的添加

python 复制代码
from pptx import Presentation
from pptx.util import Inches, Pt

# 创建一个新的PPT对象
ppt = Presentation()

# 添加一个新的幻灯片,并选择索引为5的幻灯片布局
slide = ppt.slides.add_slide(ppt.slide_layouts[5])

# 定义文本框的位置和大小
left = top = Inches(1)
width = height = Inches(5)

# 在幻灯片上添加文本框
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame

# 添加一个段落
p = tf.add_paragraph()

# 在段落中添加一个运行对象
r = p.add_run()

# 设置运行对象的文本内容
r.text = 'Click here'

# 设置运行对象的超链接地址
r.hyperlink.address = 'https://www.baidu.com'

# 保存PPT文件
ppt.save('test.pptx')

这段代码创建了一个新的PPT文件,并添加了一个新的幻灯片。 然后,它在幻灯片上添加了一个文本框,并获取了文本框的文本框对象。 接下来,它在文本框中添加了一个段落,然后在段落中添加了一个运行对象。该运行对象包含了文本内容和超链接地址。 最后,它将PPT文件保存为'test.pptx'。

动画的添加

以下是使用 python-pptx 库向演示文稿中添加动画的示例代码:

python 复制代码
from pptx import Presentation
from pptx.util import Inches
from pptx.enum.shapes import MSO_SHAPE

# 创建演示文稿对象
ppt = Presentation()

# 添加幻灯片页面
slide = ppt.slides.add_slide(ppt.slide_layouts[0])

# 添加一个形状元素
shape = slide.shapes.add_shape(
    MSO_SHAPE.RECTANGLE,
    Inches(2), Inches(2),
    Inches(4), Inches(2)
)

# 添加一个文本框
text_frame = shape.text_frame

# 在文本框中添加文本
text_frame.text = "你好,世界!"

# 添加幻灯片入场动画效果
slide.shapes._spTree.insert(2, slide.shapes._spTree[-1])

# 保存演示文稿
ppt.save("test_ppt.pptx")

上述代码创建了一个演示文稿对象,并向其中添加了一个幻灯片页面。然后,它在页面中添加了一个形状元素,并设置了元素的文本为 "你好,世界!"。 接下来,它在形状元素的文本框中添加了一个段落,并给段落的文本运行添加了一个入场动画效果。 最后,它将演示文稿保存为 "test_ppt.pptx" 文件。

批量操作

批量操作,例如在多个幻灯片中插入文字或图片,是一种十分常见的需求。这个操作并没有什么特别之处,只是在一个单一操作的基础上增加了一个循环。下面是在每一个新的幻灯片中插入相同文本的例子:

python 复制代码
from pptx import Presentation
from pptx.util import Inches

# 创建演示文稿对象
ppt = Presentation()

for i in range(10):
    # 添加幻灯片页面
    slide = ppt.slides.add_slide(ppt.slide_layouts[5])
    
    # 设置文本框的位置和大小
    left = top = Inches(1)
    width = height = Inches(5)
    
    # 添加一个形状元素(文本框)
    txBox = slide.shapes.add_textbox(left, top, width, height)
    tf = txBox.text_frame
    
    # 在文本框中添加文本
    p = tf.add_paragraph()
    p.text = "这是文本" + str(i + 1)
    
# 保存演示文稿
ppt.save('test.pptx')

在以上示例中,10个幻灯片被创建,并在每个幻灯片中添加了一段文本。

PPT自动化

使用Python我们可以实现PPT的自动化生成,例如,我们可以基于模板和数据生成报告,也可以基于脚本生成教程等。以下是一个简单的例子:

python 复制代码
from pptx import Presentation
from pptx.util import Inches

# 创建数据
data = [["研发部", '10', '20', '30', '40'],
        ["市场部", '20', '30', '40', '50'],
        ["销售部", '30', '40', '50', '60']]

# 创建演示文稿对象
ppt = Presentation()

for row in data:
    # 添加幻灯片页面
    slide = ppt.slides.add_slide(ppt.slide_layouts[5])
    
    # 设置文本框的位置和大小
    left = Inches(1)
    top = Inches(1)
    width = Inches(6)
    height = Inches(0.8)
    
    for i, text in enumerate(row):
        # 添加一个形状元素(文本框)
        txBox = slide.shapes.add_textbox(left, top + Inches(i * 0.8), width, height)
        tf = txBox.text_frame
        
        # 在文本框中添加文本
        p = tf.add_paragraph()
        p.text = text
        
# 保存演示文稿
ppt.save('test.pptx')

上述代码根据表格数据创建了若干滑块,每个滑块有单独的部门名和数据。

在 Python 和python-pptx的帮助下,我们可以根据需要对PowerPoint进行各种丰富的操作,包括创建、编辑和格式化。希望本文能为你的PPT制作带来些许灵感!

欢迎关注微信公众号【千练极客】,尽享更多干货文章!

欢迎关注微信公众号【千练极客】,尽享更多干货文章!

欢迎关注微信公众号【千练极客】,尽享更多干货文章!

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
笨鸟先飞,勤能补拙1 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能2 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂2 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study3 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境4 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境4 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1234 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102164 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb005 小时前
一个项目带你入门AI应用开发01
python
0566465 小时前
Python康复训练——常用标准库
开发语言·python·学习