问题背景

大量表格数据需要生成指定格式的ppt文件,内容以文字和表格为主,首尾页与内容有固定格式。博主不熟悉VBA操作,希望通过模板用Python完成自动化。

基本思路

使用xlrd模块读取xlsx文件内容

使用pptx模块完成ppt修改

模块版本

本文完成时使用的Python模块版本如下

pip install xlrd==1.2.0 python-pptx==0.6.18

具体实现

数据读取

插入页面

网上有很多关于pptx的参考资料,很快可以上手并新建新的幻灯片页(slide):

from pptx import Presentation

prs = Presentation('template.pptx')

def new_slide(idx):

'Add slide with layout, 0 = title, 1 = content, 2 = ending'

layout = prs.slide_layouts[idx]

slide = prs.slides.add_slide(layout)

return slide

上述代码支持根据幻灯片版式(layout)生成不同的空白页,如模板定义0标题1内容2结尾。具体版式可在ppt菜单【视图】-【幻灯片母版】中进行编辑。

**缺陷:**新建slide会自动添加到末尾页,无法移动。

写入内容

在Office 2007之后的pptx文件本质上是一个结构化的xml压缩包,而xml中的段落决定了每一页的元素的模板、内容、格式、字体、大小、位置等,因此通过搜过xml文件中不同的内容即可快速定位到需要修改的字段。

在ppt中每个元素都抽象为shape,对于表格,我的方案是在模板中做好格式并使用deepcopy复制到新的页面再修改内容。

from copy import deepcopy

slide = new_slide(1) #content slide

slide.shapes.title.text = '本页标题'

el = prs.slides[1].shapes[2].element #table in template

ol = deepcopy(el) #duplicate

slide.shapes._spTree.insert_element_before(ol)

table = slide.shapes[1].table #table in new slide

table.cell(1,1).text_frame.paragraphs[0].runs[0].text = '表格内容'

删除页面

官方issue指出无法移动slide可通过remove+insert间接实现,比较繁琐。 问题简化:尾部批量添加新容页结和尾最页,后删去模板二三页。 【模板开头】【模板内容】【模板结尾】【新内容1】【新内容2】……【新结尾】

def del_slide(index):

slides = list(prs.slides._sldIdLst)

prs.slides._sldIdLst.remove(slides[index])

参考文档

python的pptx文档remove_Python之pptx实现添加内容与删除(移动)页操作相关推荐

  1. python读取word文档结构图_python根据文章标题内容自动生成摘分享的实例

    如何用Python玩转TF-IDF之寻找相似文章并生成摘要 应用1:关键词自动生成 核心思想是对于某个文档中的某个词,计算其在这个文档中的标准化TF值,然后计算这个词在整个语料库中的标准化IDF值.在 ...

  2. 如何使用Docx4J合并docx及pptx文档

    Docx4j docx4j是一个用于处理OOXML(office open xml)文档(如docx.pptx等文档)的库,功能非常强大,其基础部分是开源的,但一些高级功能是需要商业授权,比如文档的合 ...

  3. Springboot生成Word/EXECL/PPTX文档

    目录 一.概述 二.使用介绍 第一种Poi-tl: 1.介绍 2.功能 第二种Poi: 什么是POI 二进制分布 源码分发 一.概述 Word模板引擎:使用Word模板和数据生成对应的Word文档. ...

  4. python docx 合并文档 图片_Python+pymupdf处理PDF文档案例6则

    推荐图书:<Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷,7月第2次印刷 京东购买链接:https://it ...

  5. Python实现自动化办公(三):Python对PPT文档的基本操作(python-pptx)

    Python对PPT文档的基本操作 文章目录 Python对PPT文档的基本操作 一.pptx模块 1.官方文档 2.安装pptx模块 二.基本函数的使用方法 三.使用案例 1.修改ppt内容 2.写 ...

  6. python docx 合并文档 图片_Python检查Word文件中包含特定关键字的所有页码

    推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社图书详情:配套资源:用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系 ...

  7. Python获取docx文档里的批注

    注意:该作者博客已迁移至https://buxianshan.xyz 使用Python-docx库可以很方便的处理docx文件(官方文档) 但是有些隐含的信息Python-docx库好像无法读取,比如 ...

  8. python docx 合并文档 图片_MBT文档模型化生成工具——30倍效率文档撰写工程化方法...

    MBT(A model based document builder)文档模型化生成工具用户手册--30倍效率文档撰写工程化方法 1 简介 在软件工程领域,工程文档通常主要包括实施方案.需求分析.软件 ...

  9. python中的文档字符串(docString)

    python中的文档字符串(docString) - 泥土 - 博客园 python中的文档字符串(docString) Posted on 2009-02-19 15:27 泥土 阅读(2122) ...

最新文章

  1. 【深度学习理论】(4) 权重初始化,Batch Normalization
  2. MyISAM与InnoDB的索引实现
  3. bootstrap-动画过渡
  4. 灵图天行者9 pc版_原神PC预下载现已开启
  5. 【直播提醒】荷小鱼:K12 在线教育应用的开发实践
  6. 面试官问你的缺点是什么,该如何回答?
  7. hdu1501Zipper(记忆化搜索)
  8. Pedestrian Identification (1) ——前景目标检测
  9. 分析 Web 资源的访问过程(Servlet 程序访问过程)
  10. 辗转相除法(欧几里得算法)求解最大公约数、最小公倍数
  11. 计算器归零按键c语言,计算器有关按键说明大全
  12. 单片机入门学习十五 STM32单片机学习十二 电容触摸按键
  13. 为什么有些人拒绝别人的方式是说谎而不是直接说不?
  14. macOS Monterey 12.1 (21C52) 正式版 ISO、IPSW、PKG 下载
  15. 如何重新修改VHDX硬盘大小?
  16. 2021-04-29
  17. python爬取豆瓣top250信息并存入数据库中 | sqlite3
  18. 购买太平洋保险公司聚宝盆险发现虚假宣传,没有证据,如何向保监会投诉
  19. 【运筹学】线性规划 图解法 ( 唯一最优解 | 无穷最优解 | 无界解 | 无可行解 )
  20. vm安装中标麒麟v7.0

热门文章

  1. ubuntu linux 环境下的程序打包
  2. Redis 如何实现附近的人
  3. Unity3D项目之《坦克大战》
  4. 方兴东:博客网倒掉是十亿美金的教训
  5. JS - 13 - 模块化
  6. 周志明虚拟机最新版,大厂面试必备宝典
  7. 《连线》杂志:Web已死 Internet永生(全文),互联网营销
  8. 共创RPA发展生态,2019中国RPA应用与发展论坛在北京成功举办
  9. SATA协议固态硬盘的S.M.A.R.T详解
  10. shell学习18:if判断-e,-f,-f,-L,-r,-w,-x,-s,-nt,-ot的意思