作者:超级大洋葱806
https://tangxing.blog.csdn.net/article/details/109568830
1.PPT自动化能干什么?有什么优势?
-
它可以代替你自动制作PPT
-
它可以减少你调整用于调整PPT格式的时间
-
它可以让数据报告风格一致
-
总之就是:它能提高你的工作效率!让你有更多时间去做其他事情!
2.使用win32com操作ppt
官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.shape.copy
2.1 pip安装win32com
pip install pypiwin32
由于我已经安装过了,这里提示已经安装
2.2 win32com复制ppt模板
有时候我们需要对ppt的模板进行复制,然后再添加相应内容,由于python-pptx对复制模板也没有很好的支持(我没找到~忧伤),所以我们用win32com对模板页进行复制,然后再用python-pptx增加ppt内容。
参考官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.slide.copy
先准备好一张模板: 2.2 win32 ppt测试.pptx
示例代码:
import win32com from win32com.client import Dispatch import os ppt = Dispatch('PowerPoint.Application') # 或者使用下面的方法,使用启动独立的进程: # ppt = DispatchEx('PowerPoint.Application') # 如果不声明以下属性,运行的时候会显示的打开word ppt.Visible = 1 # 后台运行 ppt.DisplayAlerts = 0 # 不显示,不警告 # 创建新的PowerPoint文档 # pptSel = ppt.Presentations.Add() # 打开一个已有的PowerPoint文档 pptSel = ppt.Presentations.Open(os.getcwd() + "\\" + "2.2 win32 ppt测试.pptx") # 复制模板页 pptSel.Slides(1).Copy() #设置需要复制的模板页数 pageNums = 10 # 粘贴模板页 for i in range(pageNums): pptSel.Slides.Paste() # pptSel.Save() # 保存 pptSel.SaveAs(os.getcwd() + "\\" + "win32_copy模板.pptx") # 另存为 pptSel.Close() # 关闭 PowerPoint 文档 ppt.Quit() # 关闭 office
效果如下:
3.python-pptx 创建PPT、复制页面
官方文档:https://python-pptx.readthedocs.io/en/latest/
3.1 pip安装python-pptx
安装方法:
pip install python-pptx
我已经安装过了,故提示已经安装
3.2 python-pptx 复制页面
使用python-pptx进行复制没有找到合适的方法,有以下两种解决办法:
-
使用win32com对ppt模板进行复制
-
增加模板ppt数量,然后使用python-pptx对不需要的模板页进行删减操作
3.3 python-pptx 删除页面
python-pptx 多页待删除模板.pptx:
示例代码:
from pptx import Presentation # 删除某一页ppt def del_slide(prs,index): slides = list(prs.slides._sldIdLst) prs.slides._sldIdLst.remove(slides[index]) # 3.3 python-pptx 删除页面 def fun3_3(): # 打开ppt ppt = Presentation('python-pptx 多页待删除模板.pptx') # 获取所有页 slides = ppt.slides number_pages = len(slides) print("删除前ppt一共",number_pages,"页面") # 设置需要删除的页面数量 delPageNums = 3 # 进行删除操作(每次都删除第一张ppt) for index in range(delPageNums): del_slide(ppt,0) # 再次获取所有页 slides = ppt.slides number_pages = len(slides) print("删除后ppt一共",number_pages,"页面") ppt.save('python-pptx 多页已删除模板.pptx') print('生成完毕') if __name__ == '__main__': fun3_3()
执行效果:
3.4 新建页面
示例代码:
from pptx import Presentation # 新建ppt ppt = Presentation() # 新建页面 slide = ppt.slides.add_slide(ppt.slide_layouts[0]) # 保存ppt ppt.save('新建ppt.pptx')
效果如下:
4.python-pptx 插入文字、表格、形状并设置样式
模板ppt:
接下来,我们就在此模板上进行我们的操作演示
4.1 python-pptx 添加文字并设置样式
4.1.1 添加单行文字与多行文字
示例代码:
from pptx import Presentation from pptx.util import Pt,Cm # 打开已存在ppt ppt = Presentation('4. python-pptx操作模板.pptx') # 设置添加到当前ppt哪一页 n_page = 0 singleLineContent = "我是单行内容" multiLineContent = \ """我是多行内容1 我是多行内容2 我是多行内容3 """ # 获取需要添加文字的页面对象 slide = ppt.slides[n_page] # 添加单行内容 # 设置添加文字框的位置以及大小 left, top, width, height = Cm(16.9), Cm(1), Cm(12), Cm(1.2) # 添加文字段落 new_paragraph1 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame # 设置段落内容 new_paragraph1.paragraphs[0].text = singleLineContent # 设置文字大小 new_paragraph1.paragraphs[0].font.