乐趣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 发布!

相关推荐
肥猪猪爸2 分钟前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
LZXCyrus31 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
Enougme34 分钟前
Appium常用的使用方法(一)
python·appium
懷淰メ39 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
每天吃饭的羊2 小时前
python里的数据结构
开发语言·python
卡卡_R-Python2 小时前
UCI Heart Disease Data Set—— UCI 心脏病数据集介绍
python·plotly·django·virtualenv·pygame
饮长安千年月2 小时前
浅谈就如何解出Reverse-迷宫题之老鼠走迷宫的一些思考
python·网络安全·逆向·ctf
好看资源平台2 小时前
网络爬虫——爬虫项目案例
爬虫·python