Python办公自动化 5.1 Python操作ppt:win32com 使用教程 操作复制ppt PowerPoint

课程大纲

第二章 Python10分钟入门
【2.1】:PyCharm社区版配置Anaconda开发环境
【2.2】:Python基础知识及正则表达式入门

第三章 Python操作Excel
【3.1】:xlrd 使用教程 读取 操作Excel
【3.2】:xlwt 使用教程 写入 操作Excel
【3.3】:xlutils 使用教程 修改 操作Excel
【3.4】:xlwings 使用教程 读取 写入 修改 操【作Excel
【3.5】:openpyxl 使用教程 读取 写入 修改 操作Excel
【3.6】:xlswriter 使用教程 读取 写入 修改 操作Excel
【3.7】:win32com 使用教程 读取 写入 修改 操作Excel
【3.8】:pandas 使用教程 读取 写入 修改 操作Excel

第四章 Python操作word
【4.1】:win32com 使用教程 操作word
【4.2】:python-docx 使用教程 操作word

第五章 Python操作ppt
【5.1】:win32com 使用教程 操作复制ppt PowerPoint
【5.2】:python-pptx 使用教程 操作ppt PowerPoint 添加文字 形状图表

win32com PowerPoint 官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.shape.copy

5.1.1 pip安装win32com

pip install pypiwin32

由于我已经安装过了,所以提示已经安装:

image-20200615154927504

5.1.2 win32com复制ppt模板

有时候我们需要对ppt的模板进行复制,然后再添加相应内容,由于python-pptx对复制模板也没有很好的支持(我没找到),所以我们用win32com对模板页进行复制,然后再用python-pptx增加ppt内容。

参考官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.slide.copy

image-20200616152509653

程序示例:

import win32com
from win32com.client import Dispatch
import os

# 获取当前脚本路径
def getScriptPath():
    nowpath = os.path.split(os.path.realpath(__file__))[0]
    print(nowpath)
    return nowpath

# 5.1.2 win32com复制ppt模板页
def fun5_1_2():
    ppt = Dispatch('PowerPoint.Application')
    # 或者使用下面的方法,使用启动独立的进程:
    # ppt = DispatchEx('PowerPoint.Application')

    # 如果不声明以下属性,运行的时候会显示的打开word
    ppt.Visible = 1  # 后台运行
    ppt.DisplayAlerts = 0  # 不显示,不警告

    # pptSel = ppt.Presentations.Add() # 创建新的PowerPoint文档
    # 打开一个已有的PowerPoint文档
    pptSel = ppt.Presentations.Open(getScriptPath() + "\\" + "5.1 win32 ppt测试.pptx")

    # 复制模板页
    pptSel.Slides(1).Copy()
    # 粘贴模板页
    pptSel.Slides.Paste()

    # 操作ppt
    print(pptSel.Slides(1).Shapes.Count)
    pptSel.Slides(2).Shapes(1).TextFrame.TextRange.Text = "我是更改后的内容"
    #pptSel.Slides(1).Shapes(1).Copy()
    #pptSel.Slides(2).Shapes.Paste()
    #pptSel.Slides(1).Shapes(1).Delete()


    # pptSel.Save()  # 保存
    pptSel.SaveAs(getScriptPath() + "\\" + "new.pptx")  # 另存为
    pptSel.Close()  # 关闭 PowerPoint 文档
    ppt.Quit()  # 关闭 office


if __name__ == '__main__':
    fun5_1_2()

效果如下:

image-20200616152647575

  • 原ppt

image-20200616152827153

  • 执行程序后生成的ppt

image-20200616153005709


以上模块功能可能没列举全,大家有什么希望的操作可以直接留言,我收到留言后会增加相关操作示例(若有),并对文章进行更新,谢谢大家!

返回《Python办公自动化之Word、Excel、PPT理论与实践》课程目录

猜你喜欢

转载自blog.csdn.net/u014779536/article/details/106788474