PPT自动化 python-pptx - 2 :入门指南

201 阅读5分钟

下面从几个例子来感受一下python-pptx

详细的函数调用及表现请参考 API documentation

1. “Hello World”

from pptx import Presentation

# 创建一个演示文稿对象
prs = Presentation()

# 添加一个幻灯片(使用默认的标题幻灯片布局)
slide_layout = prs.slide_layouts[0]  # 0 是标题幻灯片布局
slide = prs.slides.add_slide(slide_layout)

# 设置幻灯片标题和副标题
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello, World!"
subtitle.text = "This is my first PowerPoint created with python-pptx!"

# 保存演示文稿
prs.save('hello_world.pptx')
if __name__ == "__main__":
    print("PowerPoint 文件已创建:hello_world.pptx")

输出

​编辑

2. 项目符号的幻灯片

from pptx import Presentation

# 创建一个演示文稿对象
prs = Presentation()

# 添加一个幻灯片(使用标题和内容布局)
slide_layout = prs.slide_layouts[1]  # 1 是标题和内容布局
slide = prs.slides.add_slide(slide_layout)

# 设置幻灯片标题
title = slide.shapes.title
title.text = "Bullet Slide Example"

# 获取内容占位符
content = slide.shapes.placeholders[1].text_frame

# 添加项目符号列表
content.text = "Main Topic"  # 第一行是主标题

# 添加子项目
p = content.add_paragraph()
p.text = "First bullet point"
p.level = 0  # 第一级项目符号

p = content.add_paragraph()
p.text = "Second bullet point"
p.level = 0  # 第一级项目符号

p = content.add_paragraph()
p.text = "Sub-point of second bullet"
p.level = 1  # 第二级项目符号(缩进)

p = content.add_paragraph()
p.text = "Third bullet point"
p.level = 0  # 第一级项目符号

# 保存演示文稿
prs.save('bullet_slide_example.pptx')

if __name__ == "__main__":
    print("PowerPoint 文件已创建:bullet_slide_example.pptx")

输出

​编辑

3. add_textbox() 幻灯片

# 导入所需的库
from pptx import Presentation  # 用于创建和操作 PowerPoint 文件
from pptx.util import Inches, Pt  # 用于设置尺寸(英寸)和字体大小(磅)

# 创建一个演示文稿对象
prs = Presentation()

# 选择一个空白幻灯片布局(布局索引 6 是空白布局)
blank_slide_layout = prs.slide_layouts[6]

# 添加一张空白幻灯片
slide = prs.slides.add_slide(blank_slide_layout)

# 设置文本框的位置和大小
left = top = width = height = Inches(1)  # 距离左侧和顶部 1 英寸,宽度和高度为 1 英寸

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

# 获取文本框的文本框架(用于添加文本)
tf = txBox.text_frame

# 设置文本框的第一行文本
tf.text = "This is text inside a textbox"

# 添加第二段文本
p = tf.add_paragraph()
p.text = "This is a second paragraph that's bold"
p.font.bold = True  # 设置第二段文本为粗体

# 添加第三段文本
p = tf.add_paragraph()
p.text = "This is a third paragraph that's big"
p.font.size = Pt(40)  # 设置第三段文本的字体大小为 40 磅

# 保存演示文稿为 PowerPoint 文件
prs.save('add_textbox.pptx')

输出

​编辑

4. add_picture() 幻灯片

# 导入所需的库
from pptx import Presentation  # 用于创建和操作 PowerPoint 文件
from pptx.util import Inches  # 用于设置尺寸(英寸)

# 图片路径
img_path = 'car.jpg'  # 替换为你的图片路径

# 创建一个演示文稿对象
prs = Presentation()

# 选择一个空白幻灯片布局(布局索引 6 是空白布局)
blank_slide_layout = prs.slide_layouts[6]

# 添加一张空白幻灯片
slide = prs.slides.add_slide(blank_slide_layout)

# 设置第一张图片的位置和高度
left = top = Inches(0.5)  # 距离左侧和顶部 0.5 英寸
height = Inches(2)  # 设置图片高度为 2 英寸(宽度会按比例缩放)

# 在幻灯片上添加第一张图片(自定义高度)
pic = slide.shapes.add_picture(img_path, left, top, height=height)

# 设置第二张图片的位置和高度
left = Inches(4)  # 距离左侧 4 英寸
top = Inches(3.5)  # 距离顶部 3.5 英寸
height = Inches(3)  # 设置图片高度为 3 英寸(宽度会按比例缩放)

# 在幻灯片上添加第二张图片(自定义高度)
slide.shapes.add_picture(img_path, left, top, height=height)

# 保存演示文稿为 PowerPoint 文件
prs.save('add_picture.pptx')

if __name__ == "__main__":
    print("PowerPoint 文件已创建:add_picture.pptx")

输出

​编辑

5. add_shape() 幻灯片

# 导入所需的库
from pptx import Presentation  # 用于创建和操作 PowerPoint 文件
from pptx.enum.shapes import MSO_SHAPE  # 提供预定义的形状类型
from pptx.util import Inches  # 用于设置尺寸(英寸)

# 创建一个演示文稿对象
prs = Presentation()

# 选择一个仅标题的幻灯片布局(布局索引 5 是仅标题布局)
title_only_slide_layout = prs.slide_layouts[5]

# 添加一张仅标题的幻灯片
slide = prs.slides.add_slide(title_only_slide_layout)

# 获取幻灯片的形状集合
shapes = slide.shapes

# 设置幻灯片的标题
shapes.title.text = 'Adding an AutoShape'

# 定义第一个形状的位置和大小
left = Inches(0.93)  # 距离左侧 0.93 英寸
top = Inches(3.0)    # 距离顶部 3.0 英寸
width = Inches(1.75) # 形状宽度为 1.75 英寸
height = Inches(1.0) # 形状高度为 1.0 英寸

# 添加一个五边形形状
shape = shapes.add_shape(MSO_SHAPE.PENTAGON, left, top, width, height)
shape.text = 'Step 1'  # 设置形状内的文本

# 调整下一个形状的位置
left = left + width - Inches(0.4)  # 将左侧位置向右移动(减去 0.4 英寸以重叠部分形状)
width = Inches(2.0)  # 设置 Chevron 形状的宽度为 2.0 英寸(Chevron 形状需要更多宽度以保持视觉平衡)

# 循环添加 Chevron 形状
for n in range(2, 6):  # 从 Step 2 到 Step 5
    shape = shapes.add_shape(MSO_SHAPE.CHEVRON, left, top, width, height)
    shape.text = 'Step %d' % n  # 设置形状内的文本
    left = left + width - Inches(0.4)  # 更新左侧位置

# 保存演示文稿为 PowerPoint 文件
prs.save('auto-shape.pptx')

if __name__ == "__main__":
    print("PowerPoint 文件已创建:auto-shape.pptx")

输出

​编辑

6. add_table() 幻灯片

# 导入所需的库
from pptx import Presentation  # 用于创建和操作 PowerPoint 文件
from pptx.util import Inches  # 用于设置尺寸(英寸)

# 创建一个演示文稿对象
prs = Presentation()

# 选择一个仅标题的幻灯片布局(布局索引 5 是仅标题布局)
title_only_slide_layout = prs.slide_layouts[5]

# 添加一张仅标题的幻灯片
slide = prs.slides.add_slide(title_only_slide_layout)

# 获取幻灯片的形状集合
shapes = slide.shapes

# 设置幻灯片的标题
shapes.title.text = 'Adding a Table'

# 定义表格的行数和列数
rows = cols = 2  # 2 行 2 列的表格

# 定义表格的位置和大小
left = top = Inches(2.0)  # 距离左侧和顶部 2.0 英寸
width = Inches(6.0)       # 表格宽度为 6.0 英寸
height = Inches(0.8)      # 表格高度为 0.8 英寸

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

# 设置列宽
table.columns[0].width = Inches(2.0)  # 第一列宽度为 2.0 英寸
table.columns[1].width = Inches(4.0)  # 第二列宽度为 4.0 英寸

# 写入表头
table.cell(0, 0).text = 'Name'   # 第一行第一列
table.cell(0, 1).text = 'Number' # 第一行第二列

# 写入表格内容
table.cell(1, 0).text = 'Pen'    # 第二行第一列
table.cell(1, 1).text = '10'     # 第二行第二列

# 保存演示文稿为 PowerPoint 文件
prs.save('add_table.pptx')

# 主程序入口
if __name__ == "__main__":
    print("PowerPoint 文件已创建:add_table.pptx")

输出

​编辑

通过以上的例子你应该对python-pptx的使用有个初步的了解。下面就让我们开始我们的python-pptx探索之旅吧