本文示例使用python-pptx模块批量生成幻灯片,批量修改导入幻灯片表格内容及格式,以及在指定页插入表格

前言

一个prs对象就是一棵树,它的下面挂载了多张幻灯片slide,而每张幻灯片下有多个shape实例,也就是你在制作幻灯片时的一个个隐形框框。其基本的层次关系如下,而table仅是其shapes集合中的一个子类型。

Presentation -> slide_masters -> slide_layouts
Presentation -> slides -> shapes -> placeholders | note | text_frame ...

安装

pip install python-pptx
  • 依赖
  • Python 2.6, 2.7, 3.3, 3.4, or 3.6
  • lxml
  • Pillow
  • XlsxWriter (to use charting features)

概念

类或关联属性 简介 相关方法
Presentation 演示文稿构造对象 -
slide_masters 幻灯片母版(一个演示文件可以具有多个幻灯片母版) -
slide_layouts 幻灯片布局(属于母版而非prs) -
slides 幻灯片对象组,默认指向第一页 add_slide
shapes 形状,类似于ps中的画布,每个shap(如table)相当于图层 add_shape
placeholders… 占位符,字典辅助类 -
  • 以下等价
prs = Presentation()
prs.slide_masters[0].slide_layouts[0]
prs.slide_layouts[0]
  • 层次关系
    Presentation -> slide_masters -> slide_layouts
    Presentation -> slides -> shapes -> placeholders | note | text_frame ...

批量创建

无中生有,见码

from pptx import Presentation
from pptx.util import Inches# 演示文稿根对象,使用默认母版
prs = Presentation()
# 幻灯片布局
title_only_slide_layout = prs.slide_layouts[5]
# prs.slide_masters 幻灯片母版for i in range(0,5):# 1. 当前幻灯片对象slide = prs.slides.add_slide(title_only_slide_layout)# 2. 当前shapes(背景画布)对象shapes = slide.shapesshapes.title.text = 'Adding a Table pardon110'+str(i)# 3.配置位置尺寸参数rows = cols = 2left = top = Inches(2.0)width = Inches(6.0)height = Inches(0.8)# 4.在(画布)上添加表格图层(表格是shapes的一种类型)table = shapes.add_table(rows, cols, left, top, width, height).table# 5.table图层设置table.columns[0].width = Inches(2.0)table.columns[1].width = Inches(4.0)# 6. 表格标题填充table.cell(0, 0).text = 'Foo'table.cell(0, 1).text = 'Bar'# 7. 表格内容填充table.cell(1, 0).text = 'Baz'table.cell(1, 1).text = 'Qux'# # 添加多个表格# left = Inches(2.0)# top = Inches(6.0)# 当前画布上添加另一个表格# table = shapes.add_table(rows, cols, left, top, width, height).table# table.cell(0, 0).text = 'pardon110'prs.save('test.pptx')

效果

定点修改

以上节生成的test.pptx为导入模板源,
修改第2和第4张幻灯片中第一个表格第二行一列的内容,变更原始列宽
并在对应幻灯片内后插入第二个表格,生成了新的修改后的版本change.pptx

from pptx import Presentation
from pptx.util import Inches
from pptx.enum.dml import MSO_THEME_COLOR# 演示文稿根对象,选择指定模板
prs = Presentation("test.pptx")
# 幻灯片布局
title_only_slide_layout = prs.slide_layouts[5]
# prs.slide_masters 幻灯片母版for i in range(len(prs.slides)):# 修改既有pptx,在第2,4页插入第二张表格,并将所在第一张表格二行一列数据进行修改if i not in [1,3]:continue# 1. 当前幻灯片对象slide = prs.slides[i]# 2. 当前shapes(背景画布)对象shapes = slide.shapes# 修改幻灯片主题内容shapes.title.text = 'update theme pardon110'+str(i)# 修改幻灯片主题背景fill = shapes[0].fillfill.solid()fill.fore_color.theme_color = MSO_THEME_COLOR.ACCENT_1fill.fore_color.brightness = -0.25# 3.配置位置尺寸参数rows = cols = 2left = Inches(2.0)top = Inches(6.0)width = Inches(6.0)height = Inches(0.8)# 4.在(画布)上增加第二个表格shape = shapes.add_table(rows, cols, left, top, width, height)table = shape.table# 5.table图层设置table.columns[0].width = Inches(2.0)table.columns[1].width = Inches(4.0)# write column headingstable.cell(0, 0).text = 'name'table.cell(0, 1).text = 'action'# write body cellstable.cell(1, 0).text = 'ppt'table.cell(1, 1).text = 'txt'# 断言当前幻灯片第二个shape是否为表格,则可访问第一个表格实例# 更改当前幻灯片第一个表格的第二行第一列内容,并更改其列宽# 基于同样的原理可以对指定模板的数据进行增删改查,背景填充,颜色,字体变更....if shapes[1].has_table:shapes[1].table.cell(1,0).text='pardon_00'+str(i+1)+'_slide'shapes[1].table.columns[0].width = Inches(3.0)prs.save('change.pptx')

效果

关键

shapes 对象是一个集合类容器,可以数组的形式访问当前页下的多个shape实例,但对于特定shape,如表格,图表 ,艺术字,多媒体(音频)资源,需要先断言后转换具体类实例使用。

class GraphicFrame(BaseShape):
“”“Container shape for table, chart, smart art, and media objects.
Corresponds to a <p:graphicFrame> element in the shape tree.
“””

补充

官方提供的api,已经能够对pptx基本元素增改查。
更多功能请参阅 官方文档 https://python-pptx.readthedocs.io/en/latest/user/install.html

pptx 批量操作幻灯片相关推荐

  1. pptx给幻灯片添加内容

    效果 代码 import pptx# 新建ppt ppt = pptx.Presentation() # 所有的版式 layouts = ppt.slide_layouts # 一张幻灯片 slide ...

  2. C# 复制幻灯片(包括格式、背景、图片等)到同/另一个PPT文档

    原文:C# 复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 C# 复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 复制幻灯片是使用PowerPoint过程中的一个比较常见的操作 ...

  3. Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转

    同一文档,在不同的文档查看器或者编译环境中,需要对该文档进行相应的格式转换.下面的内容中,将介绍通过Java编程来实现PPT文档格式转换的方法. 使用工具: Spire.Presentation fo ...

  4. 复制幻灯片(包括格式、背景、图片等)到同/另一个PPT文档

    复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 复制幻灯片是使用PowerPoint过程中的一个比较常见的操作,在复制一张幻灯片时一般有以下两种情况: 在同一个PPT文档内复制 从一个PP ...

  5. Java工程师福利!1分钟学会使用Aspose.PDF将PDF转换为PowerPoint PPT / PPTX

    由于PDF具有受支持的功能以及所有平台的稳定性和一致性,PDF已成为使用最广泛的文档格式之一.在各种情况下,会选择以PDF格式保存或共享文档.但是,在某些情况下,可能需要将PDF的内容导出到Power ...

  6. 办公自动化-ppt的创建实操-各个对象的理解-0223

    对象关系汇总 属性slides 属性slide_layouts 方法save需要 其中一个 方法add_slide需要 得到 属性shapes 属性placeholders 属性title 方法add ...

  7. Aspose.Slides for Java 3.0 发布

    Aspose.Slides for Java 3.0 发布,主要改进包括: 幻灯片打印 图表渲染 SmartArt 渲染 PPT/ODT 转 PPTX 导出幻灯片到 HTML 支持 OOXML 另外从 ...

  8. Python自动化办公:ppt文件操作教程

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前和大家介绍了python操作excel和word文件的教程,今天来和大家介绍下python对ppt的操作. 在公众号后台 ...

  9. Java输出PPT文件(二) - 占位符数据替换

    Java输出PPT文件(二) - 占位符数据替换 文章目录 Java输出PPT文件(二) - 占位符数据替换 0. 前言 1. 依赖 2. 代码 3. 测试 3.1 模板准备 3.2 替换结果 4. ...

  10. Java输出PPT文件(三) - 饼图数据替换

    Java输出PPT文件(三) - 饼图数据替换 文章目录 Java输出PPT文件(三) - 饼图数据替换 0. 前言 1. 依赖 2. 代码 3. 测试 3.1 饼图数据 3.2 模板准备 3.3 替 ...

最新文章

  1. postgresql 可调试
  2. android sqlite 单例模式,数据储存之SQLite(单例模式)
  3. Collect proper diagnostic data is very important
  4. aop的实现原理_非Spring管理Bean如何添加AOP呢?
  5. Android事件总线(四)源码解析otto
  6. android stadio 编译报错:download fastutil-7.2.0.jar
  7. Linux 下安装Node.js
  8. matlab fullfile函数
  9. 【java集合框架源码剖析系列】java源码剖析之TreeSet
  10. 非视线成像:基于飞秒摄影技术
  11. 扒一扒“WEBP格式”的图片
  12. 【交易架构day6】有赞订单交易系统的演进之路——如何存储海量订单数据
  13. 自定义进度条PictureProgressBar
  14. 海天蚝油《挑战不可能》听风者解人声密码
  15. 检测iPhone 12绿屏技巧 苹果12绿屏检测方法
  16. 服务器的ip端口加密协议混淆,Obfsproxy - 混淆/加密端口数据
  17. uint_t(uint8_t)和size_t
  18. 从战略管理角度看ERP系统信息缺失
  19. 利用运放实现信号的平移
  20. 服务器匹配原理,王者荣耀实现原理学习笔记

热门文章

  1. layui表格时间格式化
  2. ChatGPT 会开源吗?
  3. 十款磁盘碎片整理工具
  4. excel高级筛选怎么用_Excel高级筛选使用
  5. 【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
  6. .Net 配置系统-数据库配置提供者
  7. 虚拟服务器防病毒,windows 2008 Hyper-v虚拟化防病毒
  8. Blowfish简介
  9. EXCEL条件格式小知识:条件判断如何写公式,可多层if
  10. 启动Vue项目设置默认浏览器为Chrome