Python使用python-pptx库在PPT中插入表格与图片
本文详解如何使用Python的python-pptx库在PPT演示文稿中插入表格与图片。内容涵盖创建PPT对象、选择布局、添加幻灯片,以及通过add_table和add_picture方法设置表格行列、位置尺寸及图片文件路径等关键参数,帮助开发者快速掌握自动化生成PPT的核心技巧。
在上一章节中,我们学习了如何在PPT中添加段落并自定义其样式。本章将重点介绍如何在PPT中插入表格与图片,以及如何在表格内部填充具体内容。
接下来直接进入核心内容。
插入表格
首先,需要创建PPT对象。
使用 ppt = Presentation() 实例化一个PPT对象,其中Presentation类可直接从python-pptx库中导入。
接下来选择幻灯片布局。
通过 layout = ppt.slide_layout[1] 选择样式1,该布局通常包含一个标题占位符和一个内容占位符。
然后插入PPT页面。
调用 slide = ppt.slides.add_slide(layout) 函数,将之前选定的layout作为参数传入,即可生成一页新的PPT幻灯片。
随后定义表格结构。
使用 table = slide.shapes.add_table(行数, 列数, left, top, width, height).table 来创建表格对象。
参数left、top、width、height分别指定表格在PPT页面上的起始位置(左上角坐标)以及宽度和高度,从而成功获取table对象。
接着填充表格内容。
通过 table.cell(行, 列).text = 内容 的方式,利用table对象调用cell方法指定行列,并赋值text属性即可输入表格内容。
具体代码示例如下:(此处沿用上一章节的脚本,定义第三页PPT并加入表格。)
# coding:utf-8
import pptx
from pptx.util import Pt, Inches
from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
from pptx.dml.color import RGBColor
ppt = pptx.Presentation() # 生成ppt对象
layout = ppt.slide_layouts[1] # 选择布局 1
slide = ppt.slides.add_slide(layout)
title = slide.placeholders[0] # 获取title
placeholder = slide.placeholders[1] # 获取内容
title.text = "这是title"
# placeholder.text = "这是第一行段落内容\n这是第二行段落内容"
paragraph1 = placeholder.text_frame.add_paragraph() # 定义第一个段落的样式
paragraph1.text = '欢迎学习ppt制作' # 第一个样式段落的内容为 "欢迎学习ppt制作"
paragraph1.bold = True # 第一个样式段落的字体为粗体
paragraph1.font.italic = True # 第一个样式段落的字体为斜体
paragraph1.font.size = Pt(16) # 第一个样式段落的字体大小为 16 ;需要 from pptx.util import Pt
paragraph1.font.underline = True # 第一个样式段落的字体有下划线
paragraph1.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中;需 from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
paragraph2 = placeholder.text_frame.add_paragraph() # 定义第二个段落的样式
paragraph2.text = '欢迎学习python' # 第二个样式段落的内容为 "欢迎学习python"
paragraph2.font.size = Pt(32) # 第二个样式段落的字体大小为 32
paragraph2.alignment = PP_PARAGRAPH_ALIGNMENT.RIGHT # 居右
layout = ppt.slide_layouts[6] # 定义布局,使用样式 6 (样式6 只有一个title)
slide = ppt.slides.add_slide(layout)
left = top = width = height = Inches(5) # 定义 box 对象的位置与宽高
box = slide.shapes.add_textbox(left, top, width, height) # 实例化一个 box 对象
para = box.text_frame.add_paragraph() # 定义一个段落对象
para.text = 'this is a para test' # 自定义段落对象写入段落内容
para.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中
para.font.size = Pt(38) # 设置字体大小
para.font.color.rgb = RGBColor(255, 0, 0) # 设置颜色
para.font.name = '微软雅黑' # 设置字体
layout = ppt.slide_layouts[1] # 定义第三个 PPT 页面 插入表格
slide = ppt.slides.add_slide(layout)
rows = 10 # 行
cols = 2 # 列
left = top = Inches(2) # 表格起始位置
width = Inches(6.0) # 宽
height = Inches(1.0) # 高
table = slide.shapes.add_table(rows, cols, left, top, width, height).table # 实例化 table 对象
for index, _ in enumerate(range(rows)): # 利用 for 循环 与索引写入表格内容;第一个循环对应行;第二个循环对应列
for sub_index in range(cols):
table.cell(index, sub_index).text = '第{}行:第{}列'.format(index+1, sub_index+1)
ppt.save("test2.ppt")
运行上述代码后的效果如下:


插入图片
接下来学习PPT插入功能的最后一个知识点——插入图片。
插入图片的前三个步骤与插入表格完全一致。
第一步,生成PPT对象。
执行 ppt = Presentation() 实例化ppt对象(Presentation类可从python-pptx直接获取)。
第二步,选择布局。
执行 layout = ppt.slide_layout[1],这里选择了样式1,该样式包含一个标题和一个段落占位符。
第三步,插入PPT页面。
执行 slide = ppt.slides.add_slide(layout),将layout传入slides.add_slide()函数,从而生成一页PPT。
第四步,插入图片。
使用 image = slide.shapes.add_picture(图片, left, top, width, height) 添加图片。
参数left、top、width、height对应图片在PPT页面上的起始位置及宽高,通过此操作即可获取image对象。
具体代码示例如下:(继续沿用上面的脚本)
# coding:utf-8
import pptx
from pptx.util import Pt, Inches
from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
from pptx.dml.color import RGBColor
ppt = pptx.Presentation() # 生成ppt对象
layout = ppt.slide_layouts[1] # 选择布局 1
slide = ppt.slides.add_slide(layout)
title = slide.placeholders[0] # 获取title
placeholder = slide.placeholders[1] # 获取内容
title.text = "这是title"
# placeholder.text = "这是第一行段落内容\n这是第二行段落内容"
paragraph1 = placeholder.text_frame.add_paragraph() # 定义第一个段落的样式
paragraph1.text = '欢迎学习ppt制作' # 第一个样式段落的内容为 "欢迎学习ppt制作"
paragraph1.bold = True # 第一个样式段落的字体为粗体
paragraph1.font.italic = True # 第一个样式段落的字体为斜体
paragraph1.font.size = Pt(16) # 第一个样式段落的字体大小为 16 ;需要 from pptx.util import Pt
paragraph1.font.underline = True # 第一个样式段落的字体有下划线
paragraph1.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中;需 from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
paragraph2 = placeholder.text_frame.add_paragraph() # 定义第二个段落的样式
paragraph2.text = '欢迎学习python' # 第二个样式段落的内容为 "欢迎学习python"
paragraph2.font.size = Pt(32) # 第二个样式段落的字体大小为 32
paragraph2.alignment = PP_PARAGRAPH_ALIGNMENT.RIGHT # 居右
layout = ppt.slide_layouts[6] # 定义布局,使用样式 6 (样式6 只有一个title)
slide = ppt.slides.add_slide(layout)
left = top = width = height = Inches(5) # 定义 box 对象的位置与宽高
box = slide.shapes.add_textbox(left, top, width, height) # 实例化一个 box 对象
para = box.text_frame.add_paragraph() # 定义一个段落对象
para.text = 'this is a para test' # 自定义段落对象写入段落内容
para.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER # 居中
para.font.size = Pt(38) # 设置字体大小
para.font.color.rgb = RGBColor(255, 0, 0) # 设置颜色
para.font.name = '微软雅黑' # 设置字体
layout = ppt.slide_layouts[1] # 定义第三个 PPT 页面 插入表格
slide = ppt.slides.add_slide(layout)
rows = 10 # 行
cols = 2 # 列
left = top = Inches(2) # 表格起始位置
width = Inches(6.0) # 宽
height = Inches(1.0) # 高
table = slide.shapes.add_table(rows, cols, left, top, width, height).table # 实例化 table 对象
for index, _ in enumerate(range(rows)): # 利用 for 循环 与索引写入表格内容;第一个循环对应行;第二个循环对应列
for sub_index in range(cols):
table.cell(index, sub_index).text = '第{}行:第{}列'.format(index+1, sub_index+1)
layout = ppt.slide_layouts[6] # 定义第四个 PPT 页面 插入图片
slide = ppt.slides.add_slide(layout)
image = slide.shapes.add_picture(
image_file='test_image.png',
left=Inches(1),
top=Inches(1),
width=Inches(6),
height=Inches(4)
)
ppt.save("test2.ppt")
运行结果如下:


至此,关于Python实现向PPT中插入表格与图片的方法详解已完成。如需了解更多Python操作PPT插入表格及图片的内容,请搜索本站往期文章或继续阅读后续相关文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









