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