用Python自动化办公操作PPT,掌握这些技巧没压力!

大数据时代,实现数字化办公越发显得尤为重要,它可以帮助公司优化管理,提升效率,强化决策的一致性。

那我们首先来看看PPT办公自动化能干什么?

  • 它可以代替你自动制作PPT
  • 它可以减少你用于调整PPT格式的时间
  • 它可以让数据报告风格一致

了解了PPT办公自动化在工作中的重要作用,接下来我们详细讲讲如何用Python实现PPT的办公自动化。

一、使用win32com操作ppt

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

1.1pip安装win32com

1.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 osppt = 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

效果如下:

二、python-pptx 创建PPT、复制页面

2.1 pip安装python-pptx

安装方法:

2.2 python-pptx 复制页面

使用python-pptx进行复制没有找到合适的方法,有以下两种解决办法:

  • 使用win32com对ppt模板进行复制
  • 增加模板ppt数量,然后使用python-pptx对不需要的模板页进行删减操作

2.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():# 打开pptppt = Presentation('python-pptx 多页待删除模板.pptx')# 获取所有页slides = ppt.slidesnumber_pages = len(slides)print("删除前ppt一共",number_pages,"页面")# 设置需要删除的页面数量delPageNums = 3# 进行删除操作(每次都删除第一张ppt)for index in range(delPageNums):del_slide(ppt,0)# 再次获取所有页slides = ppt.slidesnumber_pages = len(slides)print("删除后ppt一共",number_pages,"页面")ppt.save('python-pptx 多页已删除模板.pptx')print('生成完毕')if __name__ == '__main__':fun3_3()

执行效果:

2.4 新建页面
示例代码:

from pptx import Presentation# 新建ppt
ppt = Presentation()# 新建页面
slide = ppt.slides.add_slide(ppt.slide_layouts[0])# 保存ppt
ppt.save('新建ppt.pptx')

效果如下:

三、python-pptx 插入文字、表格、形状并设置样式

3.1 python-pptx 添加文字并设置样式

3.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.size = Pt(15)# 添加多行# 设置添加文字框的位置以及大小
left, top, width, height = Cm(16.9), Cm(3), Cm(12), Cm(3.6)
# 添加文字段落
new_paragraph2 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame
# 设置段落内容
new_paragraph2.paragraphs[0].text = multiLineContent
# 设置文字大小
new_paragraph2.paragraphs[0].font.size = Pt(15)# 保存ppt
ppt.save('4.1 添加文字.pptx')

效果如下:

3.1.2 设置文字框样式与文字样式

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import MSO_VERTICAL_ANCHOR, PP_PARAGRAPH_ALIGNMENT
from pptx.enum.text import PP_ALIGN# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取需要添加文字的页面对象
slide = ppt.slides[0]# 设置添加文字框的位置以及大小
left, top, width, height = Cm(16.9), Cm(1), Cm(12), Cm(1.2)
# 添加文字框 slide.shapes.add_textbox(距离左边,距离顶端,宽度,高度)
textBox = slide.shapes.add_textbox(left=left, top=top, width=width, height=height)# 调整文本框背景颜色
textBoxFill = textBox.fill
textBoxFill.solid()  # 纯色填充
textBoxFill.fore_color.rgb = RGBColor(187, 255, 255)# 文本框边框样式调整
line = textBox.line
line.color.rgb = RGBColor(0, 255, 0)
line.width = Cm(0.1)# 获取文本框对象
tf = textBox.text_frame# 文本框样式调整
tf.margin_bottom = Cm(0.1)  # 下边距
tf.margin_left = 0  # 左边距
tf.vertical_anchor = MSO_VERTICAL_ANCHOR.BOTTOM  # 对齐文本方式:底端对齐
tf.word_wrap = True  # 文本框的文字自动对齐# 设置内容
tf.paragraphs[0].text = '这是一段文本框里的文字'# 字体样式调整
tf.paragraphs[0].alignment = PP_ALIGN.CENTER  # 对齐方式
tf.paragraphs[0].font.name = '微软雅黑'  # 字体名称
tf.paragraphs[0].font.bold = True  # 是否加粗
tf.paragraphs[0].font.italic = True  # 是否斜体
tf.paragraphs[0].font.color.rgb = RGBColor(255, 0, 0)  # 字体颜色
tf.paragraphs[0].font.size = Pt(20)  # 字体大小# 保存ppt
ppt.save('4.1.2 设置文字框与字体样式.pptx')

效果如下:

3.2 python-pptx 添加表格并设置样式

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import MSO_ANCHOR
from pptx.enum.text import PP_ALIGN# 设置需要添加到哪一页
n_page = 0# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取slide对象
slide = ppt.slides[n_page]# 设置表格位置和大小
left, top, width, height = Cm(6), Cm(12), Cm(13.6), Cm(5)
# 表格行列数,和大小
shape = slide.shapes.add_table(6, 7, left, top, width, height)
# 获取table对象
table = shape.table# 设置列宽
table.columns[0].width = Cm(3)
table.columns[1].width = Cm(2.3)
table.columns[2].width = Cm(2.3)
table.columns[3].width = Cm(1.3)
table.columns[4].width = Cm(1.3)
table.columns[5].width = Cm(1.3)
table.columns[6].width = Cm(2.1)# 设置行高
table.rows[0].height = Cm(1)# 合并首行
table.cell(0, 0).merge(table.cell(0, 6))# 填写标题
table.cell(1, 0).text = "时间"
table.cell(1, 1).text = "阶段"
table.cell(1, 2).text = "执行用例"
table.cell(1, 3).text = "新增问题"
table.cell(1, 4).text = "问题总数"
table.cell(1, 5).text = "遗留问题"
table.cell(1, 6).text = "遗留致命/" \"严重问题"# 填写变量内容
table.cell(0, 0).text = "产品1"
content_arr = [["4/30-5/14", "DVT1", "20", "12", "22", "25", "5"],["5/15-5/21", "DVT1", "25", "32", "42", "30", "8"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"]]# 修改表格样式
for rows in range(6):for cols in range(7):# Write column titlesif rows == 0:# 设置文字大小table.cell(rows, cols).text_frame.paragraphs[0].font.size = Pt(15)# 设置字体table.cell(rows, cols).text_frame.paragraphs[0].font.name = '微软雅黑'# 设置文字颜色table.cell(rows, cols).text_frame.paragraphs[0].font.color.rgb = RGBColor(255, 255, 255)# 设置文字左右对齐table.cell(rows, cols).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER# 设置文字上下对齐table.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLE# 设置背景为填充table.cell(rows, cols).fill.solid()# 设置背景颜色table.cell(rows, cols).fill.fore_color.rgb = RGBColor(34, 134, 165)elif rows == 1:table.cell(rows, cols).text_frame.paragraphs[0].font.size = Pt(10)table.cell(rows, cols).text_frame.paragraphs[0].font.name = '微软雅黑'  # 字体名称table.cell(rows, cols).text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 0, 0)table.cell(rows, cols).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTERtable.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLEtable.cell(rows, cols).fill.solid()table.cell(rows, cols).fill.fore_color.rgb = RGBColor(204, 217, 225)else:table.cell(rows, cols).text = content_arr[rows - 2][cols]table.cell(rows, cols).text_frame.paragraphs[0].font.size = Pt(10)table.cell(rows, cols).text_frame.paragraphs[0].font.name = '微软雅黑'  # 字体名称table.cell(rows, cols).text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 0, 0)table.cell(rows, cols).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTERtable.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLEtable.cell(rows, cols).fill.solid()table.cell(rows, cols).fill.fore_color.rgb = RGBColor(204, 217, 225)ppt.save('4.2 python-pptx 添加表格并设置样式.pptx')

3.3 python-pptx 添加图表并设置样式

示例代码:

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE# 设置需要添加到哪一页
n_page = 0# 打开已存在ppt
ppt = Presentation('4. python-pptx操作模板.pptx')# 获取slide对象
slide = ppt.slides[n_page]# 初始化图表
chart_data = ChartData()# 填充需要添加的内容
content_arr = [["4/30-5/14", "DVT1", "20", "12", "22", "25", "5"],["5/15-5/21", "DVT1", "25", "32", "42", "30", "8"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"],["5/22-6/28", "DVT1", "1", "27", "37", "56", "12"]]# 填充图表
chart_data.categories = [content_arr[0][0], content_arr[1][0], content_arr[2][0], content_arr[3][0]]
chart_data.add_series("问题总数", (content_arr[0][4], content_arr[1][4], content_arr[2][4], content_arr[3][4]))
chart_data.add_series("遗留问题总数", (content_arr[0][5], content_arr[1][5], content_arr[2][5], content_arr[3][5]))
chart_data.add_series("遗留致命严重\n问题总数", (content_arr[0][6], content_arr[1][6], content_arr[2][6], content_arr[3][6]))# 设置位置
left, top, width, height = Cm(6), Cm(10), Cm(16.1), Cm(7.5)
# 添加图表
chart = slide.shapes.add_chart(XL_CHART_TYPE.LINE, left, top, width, height, chart_data
).chartchart.has_legend = True
chart.legend.include_in_layout = False
# chart.series[0].smooth = True # 是否平滑
# chart.series[1].smooth = True
# chart.series[2].smooth = True
chart.font.size = Pt(10)  # 文字大小ppt.save('4.3 python-pptx 添加图表并设置样式.pptx')
print('折线图添加完成')

效果图:

好了,以上是比较详细的操作方法,希望能给大家有点帮助

关注小编或收藏,学习起来更方便!

用Python自动化办公操作PPT,掌握这些技巧没压力!相关推荐

  1. 如何用python实现自动化办公_python自动化办公操作PPT的实现

    1.python-pptx模块简介 使用python操作PPT,需要使用的模块就是python-pptx,下面来对该模块做一个简单的介绍.这里提前做一个说明:python操作PPT,最好是我们提前设计 ...

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

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

  3. Python自动化办公 - 对PPT的操作(Python-pptx的基本使用)

    1. 安装模块 Windows用户打开命令行输入:pip install python-pptx Mac用户打开终端/Terminal输入:pip3 install python-pptx 使用win ...

  4. Python自动化办公PPT-写入内容

    1. 安装模块 Windows用户打开命令行输入:pip install python-pptx Mac用户打开终端/Terminal输入:pip3 install python-pptx 使用win ...

  5. python 自动化办公之(三)PPT操作

    python 自动化办公之(三)PPT操作 一.安装ppt库 二.接口介绍 三.程序示例 一.安装ppt库 pip install python-pptx 二.接口介绍 #导入库 from pptx ...

  6. python自动化办公之python操作PPT

    python自动化文章一直深受广大python爱好者的青睐.基于此,我花了整整一周时间真理出来的python自动化文档手册,涉及到六个章节(如下图所示): ① python使用openpyxl操作ex ...

  7. 好用到爆的Python自动化办公教程pdf,Python × Excel × Word × PPT 一次搞定

    在这个自动化时代,我们有很多重复无聊的工作要做.想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松.那么在本文中,我将向您介绍一个好用到爆的Python自动化办公教程pdf,P ...

  8. python自动化办公之爬取HTML图片写入PPT实战

    python自动化办公之批量图片导入PPT 昨天,大Boss找到一个网页,觉得里面的图片内容特别好,想把它下载下来作为学习资料,整理整理教导下属.但是,手动一张一张的保存图片太慢了,问我可不可以下载下 ...

  9. Python自动化办公:word文件操作教程

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家完整的介绍了用python操作excel的几个库:xlrd.xlwt.openpyxl. 山月也已经整理好了,还没 ...

  10. Python自动化办公word、ppt转pdf

    Python自动化办公,在工作的过程中偶尔会遇到大量的word.ppt转pdf的情况,针对这情况,归纳了一份Python使用,希望可以加大办公的效率! import os import comtype ...

最新文章

  1. 百度 和 AI教父Hinton 的故事
  2. Linux入门时必学文件处理个命令
  3. Golang结构体struct的使用(结构体嵌套, 匿名结构体等)
  4. 阿里云物联网生活平台简介
  5. c语言扫描图片的坐标,tc 如何在指定坐标处 输出bmp图片??
  6. 树莓派外设开发基础(wiringPi库)
  7. maven的使用--初级篇
  8. 计算机图像处理发展前景,数字图像处理发展前景
  9. 【学习笔记】C# 动态系统托盘图标的实现 - NotifyIcon控件
  10. rda分析怎么做_RDA分析
  11. 2023年太原理工大学水利工程考研考情与难度、参考书前辈备考经验
  12. office插件开发_OneKeyTools:强大PPT插件
  13. mysql查询的结果拼接字符串_MySql查询结果拼接成字符串
  14. leetcode 58. 最后一个单词的长度(Length of Last Word)
  15. 车载以太网第二弹-实锤|SOME/IP概述及TC8 SOME/IP 测试实践
  16. 用dd实现linux硬盘备份
  17. 奖励稀疏_好奇心解决稀疏奖励任务
  18. 安卓webview和h5交互
  19. 周末去哪儿架构师跟你聊:大数据平台快速解决方案
  20. 刷问卷星调查问卷_如何通过回答快速调查问卷从Google获得免费资金

热门文章

  1. Linux 之父亮相,这个开源社区要“搞大事”
  2. mysql mtq_第十六节:Mysql中的关键字
  3. oneway的定义和使用
  4. 使用Cython将python文件打包成.so文件
  5. vue实现动态二维码完成签到功能
  6. turtlebot 2i 安装*
  7. canvas画不规则图形
  8. Python从入门到实践-第三章习题
  9. 单端正激——隔离型DC/DC变换器的建模与仿真
  10. 第五章 Spanning Tree协议安全攻防