python自动化文章一直深受广大python爱好者的青睐。基于此,我花了整整一周时间真理出来的python自动化文档手册,涉及到六个章节(如下图所示):
① python使用openpyxl操作excel;
② python使用PyPDF2和pdfplumber操作pdf;
③ python使用python-docx操作word;
④ python使用python-pptx操作PPT;
⑤ python如何自动收发邮件;
⑥ python制作电话号码归属地查询工具。
由于文档获取人数太多,大家如有需求,请关注公众号:【数据分析与统计学之美】,回复关键词:【自动化数据】!

目录

  1、python-pptx模块简介
  2、模块的安装与导入
   1)模块的安装
   2)模块的导入
  3、python读取PPT文档中的内容
   1)PPT的结构说明
   2)获取Slide
   3)获取Shape形状
   4)判断每个Shape中是否存在文字
   5)获取某一页Slide中的内容
   6)获取Shape中的某个Paragraph
  4、利用python像PPT中写入内容
   1)幻灯片模板及占位符的概念
   2)怎么自定义母版?
   3)什么是版式?
   4)添加Slide和内容
     ① 占位符id的确认
     ② PPT内容的填写
   5)添加段落
     ① 占位符id的确认
     ② 段落的添加
     ③ 给段落设定层级关系
     ④ 添加一个文本框
     ⑤ 添加一个图片
     ⑥ 添加表格
  5、PPT文档内容样式批量调整
   1)文本框位置的调整
   2)文本框背景颜色调整
   3)文本框边框样式调整
   4)段落对其调整
   5)字体样式调整

1、python-pptx模块简介

使用python操作PPT,需要使用的模块就是python-pptx,下面来对该模块做一个简单的介绍。这里提前做一个说明:python操作PPT,最好是我们提前设计好自己的一套样式,然后利用进行python进行内容的获取和填充(最主要的功能!),最好是不用使用python代码操作PPT的格式,格式的修改肯定不如我们直接在PPT中修改方便。

  • 可以创建、修改PPT(.pptx)文件
  • 需要单独安装,不包含在Python标准模块里
  • python-pptx官网介绍:https://python-pptx.readthedocs.io/en/latest/

2、模块的安装与导入

1)模块的安装
"Windows用户命令行下输入"
pip install python-pptx
"Mac用户命令行下输入"
pip3 install python-pptx
2)模块的导入

这里有一点需要注意的是:安装的库是python-pptx,但是导入的时候却有点不同。

import pptx

3、python读取PPT文档中的内容

1)PPT的结构说明

在使用python操作PPT之前,首先应该清楚PPT的结构,这个对于之后代码的编写很有帮助。

注意:关于run块儿的概念,可以参考我的另外一篇文章https://blog.csdn.net/weixin_41261833/article/details/106028038

2)获取Slide
from pptx import Presentationprs = Presentation("统计学习方法PPT.pptx")
for slide in prs.slides:print(slide)

结果如下:

3)获取Shape形状
import pptx
from pptx import Presentationprs = Presentation("统计学习方法PPT.pptx")
for slide in prs.slides:for shape in slide.shapes:print(shape)
"""
注意:这里得到的Shape对象,并不能看出什么,接着往下看。
"""

结果如下:

4)判断每个Shape中是否存在文字
  • shape.has_text_frame :是否有文字
  • shape.text_frame :获取文字框
import pptx
from pptx import Presentationprs = Presentation("统计学习方法PPT.pptx")
for slide in prs.slides:for shape in slide.shapes:if shape.has_text_frame:text_frame = shape.text_frameprint(text_frame.text)

结果如下:

5)获取某一页Slide中的内容
import pptx
from pptx import Presentationprs = Presentation("统计学习方法PPT.pptx")for i,slide in enumerate(prs.slides):if i == 5:for shape in slide.shapes:if shape.has_text_frame:text_frame = shape.text_frameprint(text_frame.text)

结果如下:

6)获取Shape中的某个Paragraph
import pptx
from pptx import Presentationprs = Presentation("统计学习方法PPT.pptx")for i,slide in enumerate(prs.slides):if i == 5:for shape in slide.shapes:if shape.has_text_frame:text_frame = shape.text_framefor paragraph in text_frame.paragraphs:print(paragraph.text)
"""
注意:该方法和上述4)中的方法一摸一样。上述方法是直接获取Shpae中的文字内容;
下面这个更灵活,先获取每个Shape,然后在获取每个Shape中的paragraph;
下面方式更好:因为我们可以针对paragraph,写一个判断条件,只获取第几个paragraph;
"""

结果如下:

4、利用python像PPT中写入内容

1)幻灯片模板及占位符的概念

2)怎么自定义母版?

https://jingyan.baidu.com/article/925f8cb8b5dfe7c0dce05671.html

3)什么是版式?

这个概念在下面的效果中,会得以体现。其中prs.slide_layouts[]传入0表示获取的是第一个版式,传入1表示获取的是第二个版式,以此类推下去。

4)添加Slide和内容

这里就需要使用上述的自定义母版。因为毕竟是使用python操作PPT,我们可以定义好自己想要展示的PPT母版,然后借助代码完成PPT的内容写入操作。

① 占位符id的确认
import pptx
from pptx import Presentationprs = Presentation("空白.pptx")
# prs.slide_layouts[]表示的是ppt中不同的版式
slide = prs.slides.add_slide(prs.slide_layouts[0])
for shape in slide.placeholders:phf = shape.placeholder_formatprint(f"{phf.idx}--{shape.name}--{phf.type}")shape.text = f"{phf.idx}--{shape.name}--{phf.type}"
# 注意:做完这个操作,一定要记得保存一下!
prs.save("电子奖状模板.pptx")
"""
上述打印结果如下:
0--Title 1--TITLE (1)  这个表示标题占位符,id为0
13--Picture Placeholder 2--PICTURE (18)  这个表示图片占位符,id为13
14--Text Placeholder 3--BODY (2)  这个表示正文内容占位符,id为14
15--Text Placeholder 4--BODY (2)  这个表示正文内容占位符,id为15
我们一定要先知道每个空格的占位符id,才可以进行下面内容的填充。
"""

效果如下:

② PPT内容的填写
import pptx
from pptx import Presentationprs = Presentation("空白.pptx")
slide = prs.slides.add_slide(prs.slide_layouts[0])
name = slide.placeholders[14]
why = slide.placeholders[15]name.text = "黄同学"
why.text = "学习太积极"
prs.save("内容填充.pptx")

效果如下:

5)添加段落
① 占位符id的确认
import pptx
from pptx import Presentationprs = Presentation("finall.pptx")
slide = prs.slides.add_slide(prs.slide_layouts[0])
for shape in slide.placeholders:phf = shape.placeholder_formatprint(f"{phf.idx}--{shape.name}--{phf.type}")shape.text = f"{phf.idx}--{shape.name}--{phf.type}"
print("-------------------------------------------")
slide = prs.slides.add_slide(prs.slide_layouts[1])
for shape in slide.placeholders:phf = shape.placeholder_formatprint(f"{phf.idx}--{shape.name}--{phf.type}")shape.text = f"{phf.idx}--{shape.name}--{phf.type}"prs.save("哈哈.pptx")

效果如下:

② 段落的添加
import pptx
from pptx import Presentationprs = Presentation("finall.pptx")
slide = prs.slides.add_slide(prs.slide_layouts[0])
name = slide.placeholders[14]
why = slide.placeholders[15]
name.text = "黄同学"
why.text = "学习太积极"
# --------------------------------------------------- #
prs1 = Presentation("finall.pptx")
slide1 = prs.slides.add_slide(prs.slide_layouts[1])
shapes = slide1.shapes
title_shape = shapes.title  # 这句代码可以改为title_shape = shapes.placeholders[0]
body_shape = shapes.placeholders[1]title_shape.text = "这是一个标题"tf = body_shape.text_frame
# 这句代码就是给body占位符添加内容!
tf.text = "带圆点的符号1"p = tf.add_paragraph()
# 这个代码表示在原来的基础上,添加第一个段落!
p.text = "带圆点的符号2"p = tf.add_paragraph()
# 这个代码表示在原来的基础上,添加第二个段落!
p.text = "带圆点的符号3"prs.save("嘿嘿.pptx")

效果如下:

③ 给段落设定层级关系
import pptx
from pptx import Presentationprs = Presentation("finall.pptx")
slide = prs.slides.add_slide(prs.slide_layouts[0])
name = slide.placeholders[14]
why = slide.placeholders[15]
name.text = "黄同学"
why.text = "学习太积极"
# --------------------------------------------------- #
prs1 = Presentation("finall.pptx")
slide1 = prs.slides.add_slide(prs.slide_layouts[1])
shapes = slide1.shapes
title_shape = shapes.title  # 这句代码可以改为title_shape = shapes.placeholders[0]
body_shape = shapes.placeholders[1]title_shape.text = "这是一个标题"tf = body_shape.text_frame
tf.text = "带圆点的符号1"p = tf.add_paragraph()
p.text = "带圆点的符号2"
# 原始内容的层级相当于是0,因此这个段落我设置为层级1,下面的段落设置为层级2
p.level = 1p = tf.add_paragraph()
p.text = "带圆点的符号3"
p.level = 2prs.save("嘻嘻.pptx")

效果如下:

④ 添加一个文本框
  • slide.shapes.add_textbox(left, top, width, height)
from pptx import Presentation
from pptx.util import Cm, Ptprs = Presentation()
# 使用第一个版式
black_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(black_slide_layout)left = top = width = height = Cm(3)
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
tf.text = "这是一段文本框里面的文字"p = tf.add_paragraph()
p.text = "这是第二段文字,加粗,字号40"
p.font.bold = True
p.font.size = Pt(40)prs.save("添加一个文本框0.pptx")

效果如下:

⑤ 添加一个图片
  • slide.shapes.add_picture(图片路径, 距离左边, 距离顶端, 宽度, 高度)

第一种展示:

from pptx import Presentation
from pptx.util import Cmprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = Cm(3)
pic = slide.shapes.add_picture("孙悟空.png", left, top)prs.save("添加图片1.pptx")

效果如下:

第二种展示:

from pptx import Presentation
from pptx.util import Cmprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = Cm(3)
height = Cm(5.5)
pic = slide.shapes.add_picture("孙悟空.png", left, top, height=height)prs.save("添加图片2.pptx")

效果如下:

⑥ 添加表格
  • shapes.add_table(rows, cols, left, top, width, height)
from pptx import Presentation
from pptx.util import Cm, Ptprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)
shapes = slide.shapesrows, cols = 5, 3
left = top = Cm(5)
width = Cm(18)
height = Cm(3)table = shapes.add_table(rows, cols, left, top, width, height).table
table.columns[0].width = Cm(6)
table.columns[1].width = Cm(2)
table.columns[2].width = Cm(2)
table.rows[0].height = Cm(2)data = [["姓名","性别","成绩"],["张三","男",96],["李四","女",87],["王五","女",90],["赵六","男",78]
]for row in range(rows):for col in range(cols):table.cell(row,col).text = str(data[row][col])
prs.save("插入表格.pptx")

结果如下:

5、PPT文档内容样式批量调整

1)文本框位置的调整

上面我们已经知道怎么添加文本框,现在我们需要做的就是,怎么调整文本框的位置。

from pptx import Presentation
from pptx.util import Cm, Pt
from pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZEprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = width = height = Cm(3)
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
tf.text = "这是一段文本框里面的文字"
# ----------------------------------------- #
tf.margin_bottom = Cm(0.1) # 下边距
tf.margin_left = 0 # 下边距
# 一定要导入MSO_ANCHOR这个库
tf.vertical_anchor = MSO_ANCHOR.BOTTOM # 对齐文本方式:底端对齐
tf.word_wrap = True # 框中的文字自动换行prs.save("文本框样式的调整.pptx")

结果如下:

2)文本框背景颜色调整
from pptx import Presentation
from pptx.util import Cm, Pt
from pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE
from pptx.dml.color import RGBColorprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = width = height = Cm(3)
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
tf.text = "这是一段文本框里面的文字"
# -------------------------------------- #
tf.margin_bottom = Cm(0.1) # 下边距
tf.margin_left = 0 # 下边距
tf.vertical_anchor = MSO_ANCHOR.BOTTOM
tf.word_wrap = True # 框中的文字自动换行
# -------------------------------------- #
fill = text_box.fill
fill.solid()
# 使用之前一定要导入RGBColor这个库
fill.fore_color.rgb = RGBColor(247, 150, 70)prs.save("文本框背景色的调整.pptx")

结果如下:

3)文本框边框样式调整
from pptx import Presentation
from pptx.util import Cm, Pt
from pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE
from pptx.dml.color import RGBColorprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = width = height = Cm(3)
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
tf.text = "这是一段文本框里面的文字"
# -------------------------------------- #
tf.margin_bottom = Cm(0.1) # 下边距
tf.margin_left = 0 # 下边距
tf.vertical_anchor = MSO_ANCHOR.BOTTOM
tf.word_wrap = True # 框中的文字自动换行
# -------------------------------------- #
fill = text_box.fill
fill.solid()
# 使用之前一定要导入RGBColor这个库
fill.fore_color.rgb = RGBColor(247, 150, 70)
# -------------------------------------- #
line = text_box.line
line.color.rgb = RGBColor(255, 0, 0)
line.width = Cm(0.3)prs.save("文本框边框样式调整.pptx")

结果如下:

4)段落对其调整
from pptx import Presentation
from pptx.enum.text import PP_ALIGNprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = width = height = Cm(3)
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
# ---------------------------- #
p = tf.add_paragraph()
p.text = "这是第二段文字"
p.alignment = PP_ALIGN.LEFTprs.save("段落对其调整.pptx")

当然这里还有一些其他样式的调整,和word很类似,就不一一叙述了。

5)字体样式调整


代码如下:

from pptx import Presentation
from pptx.util import Cm, Pt
from pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGNprs = Presentation()
# 使用第七个版式
black_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(black_slide_layout)left = top = width = height = Cm(3)
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
# ---------------------------- #
p = tf.add_paragraph()
p.text = "这是第二段文字"
p.alignment = PP_ALIGN.LEFT
# ------------------------------------- #
p.font.bold = True
p.font.name = "宋体"
p.font.color.rgb = RGBColor(247, 150, 70)
p.font.size = Pt(30)prs.save("字体样式调整.pptx")

结果如下:

python自动化办公之python操作PPT相关推荐

  1. 手把手教你python自动化办公(三)---PPT批量修改

    手把手教你python自动化办公(三)---PPT批量修改 PPT批量修改 场景模拟:当公司让你制作10000个不同数据但背景相同的PPT时,你是干上三天,还是小手一挥,十秒搞定? 1.设计你想要的P ...

  2. lisp对excel其他行列写入_【极简Python 自动化办公】Python写入Excel表格

    [极简Python 自动化办公]Python写入Excel表格 [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. ...

  3. python自动化办公兼职-python自动化办公?学这些就够用了

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手? python在自动化办公领域越来越受欢迎,批量处 ...

  4. python自动化办公 书籍-python自动化办公知识点整理汇总

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理 ...

  5. 【python自动化办公】Python自动化之pdf——PyPDF2、pdfplumber、fitz、pdf2image库介绍

    目录 前言 1. 学习python自动化办公目的 2. 未来持续打卡内容 3. 资料来源与思维导图 一.PDF处理库 1.PyPDF2--基础操作 2.pdfplumber--表格抽取 3.fitz- ...

  6. 【python自动化办公】Python自动化之Excel——XLWings模块(入门)

    目录 前言 1. 学习python自动化办公目的 2. 未来持续打卡内容 3. 资料来源 一.xlwings介绍 1. 是什么?有什么优点? 2. 数据结构 3. 操作内容 一个实例: 创建一个exc ...

  7. itext word模板替换_【极简Python 自动化办公】Python写入Word文档

    [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. 在上次文章中,我们学习了[用python写入excel],这次我 ...

  8. python自动化办公教程-python办公自动化:Excel操作入门

    1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwriter-*.*.*.tar.gz python s ...

  9. Python自动化办公系列-Python添加Word段落

    讲解之前 首先需要知道自动化办公操作Word的一个包--python-docx 安装 pip install python-docx 使用方法 # 导入模块 from docx import Docu ...

最新文章

  1. linux常用命令(转载)
  2. MongoDB的备份(mongodump)与恢复(mongorestore)
  3. doT.js 模板引擎的使用
  4. 机器视觉学习笔记(4)——单目摄像机标定参数说明
  5. apache2.4.9 开启path_info访问_如何通过SSH访问NAS?
  6. PCM接口详细介绍--TDM方式
  7. 牛客网【每日一题】4月13号 Accumulation Degree
  8. C#和Java中“==”和“equals”区别
  9. java stream 使用局部变量
  10. sql中查询类型为int的字段,返回null的异常
  11. JavaScript将焦点设置为HTML表单元素
  12. j2ee 简单网站搭建:(十一)ckeditor 控件使用入门
  13. 在vue 中使用Stylus
  14. paip.常用android手机软件----语音篇
  15. 网络同步在游戏历史中的发展变化(二)—— Lockstep与帧同步
  16. 从总监到CEO的一些思考和理解
  17. docker快速安装可道云
  18. 1985—1990年《ISTP》收录的世界主要国家(地区)科技会议论文情况
  19. Unity3D集成腾讯语音GVoice SDK
  20. 初级选手数据分析——Python职位数据分析全链路

热门文章

  1. node使用阿里云的短信服务
  2. S3C2440移植Linux4.19.275内核以及过程中遇到的问题
  3. Android在线人脸识别登录系统
  4. Android Qcom Audio架构学习
  5. Tekla之Solid初探
  6. ps制作玻璃效果(整体透明且上为白色半透明下为无色透明)的PNG格式背景图片
  7. 「翻译」在2d图纸间导览切换
  8. 免费下载别墅智能家居控制系统解决方案
  9. 关于软考(全国计算机技术与软件专业技术资格水平考试)经验分享
  10. [转] 40个全球免费开放的电子图书馆(给能看懂英文的用)