当前位置:   article > 正文

全网最详细教程整理,Python自动化操作PPT总结归纳_python ppt

python ppt

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
 
 
  • 1

由于我已经安装过了,这里提示已经安装

d379fc79ccfdf1a5a59e3f272ef572d1.png

2.2 win32com复制ppt模板

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

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

f2b9f595aefd211e47ac7b9521842321.png

先准备好一张模板: 2.2 win32 ppt测试.pptx

00ef8cd93758ae66b5f4d550958da23c.png

示例代码:


 
 
  1. import win32com
  2. from win32com.client  import Dispatch
  3. import os
  4. ppt = Dispatch( 'PowerPoint.Application')
  5. # 或者使用下面的方法,使用启动独立的进程:
  6. # ppt = DispatchEx( 'PowerPoint.Application')
  7. # 如果不声明以下属性,运行的时候会显示的打开word
  8. ppt.Visible =  1  # 后台运行
  9. ppt.DisplayAlerts =  0  # 不显示,不警告
  10. # 创建新的PowerPoint文档
  11. # pptSel = ppt.Presentations.Add() 
  12. # 打开一个已有的PowerPoint文档
  13. pptSel = ppt.Presentations.Open(os.getcwd() + \\ +  2.2 win32 ppt测试.pptx)
  14. # 复制模板页
  15. pptSel.Slides( 1).Copy()
  16. #设置需要复制的模板页数
  17. pageNums =  10
  18. # 粘贴模板页
  19. for i in  range(pageNums):
  20.     pptSel.Slides.Paste()
  21. # pptSel.Save()  # 保存
  22. pptSel.SaveAs(os.getcwd() + \\ + win32_copy模板.pptx)  # 另存为
  23. pptSel.Close()  # 关闭 PowerPoint 文档
  24. ppt.Quit()  # 关闭 office
  • 1

效果如下:

6b8461bffb8a18222638f486391fdafc.png 4939e0d8ca5b7632ee9d64b53cb04c1d.png

3.python-pptx 创建PPT、复制页面

官方文档:https://python-pptx.readthedocs.io/en/latest/

3.1 pip安装python-pptx

安装方法:

pip install python-pptx
 
 
  • 1

我已经安装过了,故提示已经安装

eb4471713661bd24feba1c276ef35747.png

3.2 python-pptx 复制页面

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

  1. 使用win32com对ppt模板进行复制

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

3.3 python-pptx 删除页面

python-pptx 多页待删除模板.pptx:

c4c68a05ae2e6c1ad18a20a22e86c04f.png

示例代码:


 
 
  1. from pptx  import Presentation
  2. # 删除某一页ppt
  3. def del_slide(prs,index):
  4.     slides = list(prs.slides._sldIdLst)
  5.     prs.slides._sldIdLst.remove(slides[index])
  6. 3.3 python-pptx 删除页面
  7. def fun3_3():
  8.     # 打开ppt
  9.     ppt = Presentation( 'python-pptx 多页待删除模板.pptx')
  10.     # 获取所有页
  11.     slides = ppt.slides
  12.     number_pages =  len(slides)
  13.      print(删除前ppt一共,number_pages,页面)
  14.     # 设置需要删除的页面数量
  15.     delPageNums =  3
  16.     # 进行删除操作(每次都删除第一张ppt)
  17.      for index in  range(delPageNums):
  18.         del_slide(ppt, 0)
  19.     # 再次获取所有页
  20.     slides = ppt.slides
  21.     number_pages =  len(slides)
  22.      print(删除后ppt一共,number_pages,页面)
  23.     ppt.save( 'python-pptx 多页已删除模板.pptx')
  24.      print( '生成完毕')
  25. if __name__ ==  '__main__':
  26.     fun3_3()
  • 1

执行效果:

1bb76e938b6c53e851ba3d209a4b935a.png c05b410df97901d973e184dc57ed36ce.png

3.4 新建页面

示例代码:


 
 
  1. from pptx  import Presentation
  2. # 新建ppt
  3. ppt = Presentation()
  4. # 新建页面
  5. slide = ppt.slides.add_slide(ppt.slide_layouts[ 0])
  6. # 保存ppt
  7. ppt.save( '新建ppt.pptx')
  • 1

效果如下:

bdfa600a2d5ad747d87ef416990d4929.png ecc410937cd50bdc46646243f9816301.png

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

模板ppt:

8714c4e8770fcf6ee5187e6be6caf7ec.png 4fed246d12e23c544993d31292162cb5.png

接下来,我们就在此模板上进行我们的操作演示

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

4.1.1 添加单行文字与多行文字

示例代码:


 
 
  1. from pptx  import Presentation
  2. from pptx.util  import Pt,Cm
  3. # 打开已存在ppt
  4. ppt = Presentation( '4. python-pptx操作模板.pptx')
  5. # 设置添加到当前ppt哪一页
  6. n_page =  0
  7. singleLineContent = 我是单行内容
  8. multiLineContent = \
  9. 我是多行内容 1
  10. 我是多行内容 2
  11. 我是多行内容 3
  12. # 获取需要添加文字的页面对象
  13. slide = ppt.slides[n_page]
  14. # 添加单行内容
  15. # 设置添加文字框的位置以及大小
  16. left, top, width, height = Cm( 16.9), Cm( 1), Cm( 12), Cm( 1.2)
  17. # 添加文字段落
  18. new_paragraph1 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame
  19. # 设置段落内容
  20. new_paragraph1.paragraphs[ 0].text = singleLineContent
  21. # 设置文字大小
  22. new_paragraph1.paragraphs[ 0].font.size = Pt( 15)
  23. # 添加多行
  24. # 设置添加文字框的位置以及大小
  25. left, top, width, height = Cm( 16.9), Cm( 3), Cm( 12), Cm( 3.6)
  26. # 添加文字段落
  27. new_paragraph2 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame
  28. # 设置段落内容
  29. new_paragraph2.paragraphs[ 0].text = multiLineContent
  30. # 设置文字大小
  31. new_paragraph2.paragraphs[ 0].font.size = Pt( 15)
  32. # 保存ppt
  33. ppt.save( '4.1 添加文字.pptx')
  • 1

效果如下:

6f2d4aa9ece0ca212a169c563a6d80ed.png
4.1.2 设置文字框样式与文字样式

示例代码:


 
 
  1. from pptx  import Presentation
  2. from pptx.util  import Pt,Cm
  3. from pptx.dml.color  import RGBColor
  4. from pptx.enum.text  import MSO_VERTICAL_ANCHOR, PP_PARAGRAPH_ALIGNMENT
  5. from pptx.enum.text  import PP_ALIGN
  6. # 打开已存在ppt
  7. ppt = Presentation( '4. python-pptx操作模板.pptx')
  8. # 获取需要添加文字的页面对象
  9. slide = ppt.slides[ 0]
  10. # 设置添加文字框的位置以及大小
  11. left, top, width, height = Cm( 16.9), Cm( 1), Cm( 12), Cm( 1.2)
  12. # 添加文字框 slide.shapes.add_textbox(距离左边,距离顶端,宽度,高度)
  13. textBox = slide.shapes.add_textbox(left=left, top=top, width=width, height=height)
  14. # 调整文本框背景颜色
  15. textBoxFill = textBox.fill
  16. textBoxFill.solid()  # 纯色填充
  17. textBoxFill.fore_color.rgb = RGBColor( 187255255)
  18. # 文本框边框样式调整
  19. line = textBox.line
  20. line.color.rgb = RGBColor( 02550)
  21. line.width = Cm( 0.1)
  22. # 获取文本框对象
  23. tf = textBox.text_frame
  24. # 文本框样式调整
  25. tf.margin_bottom = Cm( 0.1)  # 下边距
  26. tf.margin_left =  0  # 左边距
  27. tf.vertical_anchor = MSO_VERTICAL_ANCHOR.BOTTOM  # 对齐文本方式:底端对齐
  28. tf.word_wrap = True  # 文本框的文字自动对齐
  29. # 设置内容
  30. tf.paragraphs[ 0].text =  '这是一段文本框里的文字'
  31. # 字体样式调整
  32. tf.paragraphs[ 0].alignment = PP_ALIGN.CENTER  # 对齐方式
  33. tf.paragraphs[ 0].font.name =  '微软雅黑'  # 字体名称
  34. tf.paragraphs[ 0].font.bold = True  # 是否加粗
  35. tf.paragraphs[ 0].font.italic = True  # 是否斜体
  36. tf.paragraphs[ 0].font.color.rgb = RGBColor( 25500)  # 字体颜色
  37. tf.paragraphs[ 0].font.size = Pt( 20)  # 字体大小
  38. # 保存ppt
  39. ppt.save( '4.1.2 设置文字框与字体样式.pptx')
  • 1

效果如下:

35d01cf5671927fc88fc33ed4f5de513.png

代码详解

  • 添加文本框

    
       
       
    1. # 添加文字框 slide.shapes.add_textbox(距离左边,距离顶端,宽度,高度)
    2. textBox = slide.shapes.add_textbox(left=left, top=top, width=width, height=height)
    • 1
  • 设置文本框背景

    
       
       
    1. # 调整文本框背景颜色
    2. textBoxFill = textBox.fill
    3. textBoxFill.solid()  # 纯色填充
    4. textBoxFill.fore_color.rgb = RGBColor( 187255255)
    • 1

    RGB颜色参考:http://www.wahart.com.hk/rgb.htm

  • 设置文本框边框样式

    
       
       
    1. # 文本框边框样式调整
    2. line = textBox.line
    3. line.color.rgb = RGBColor( 02550)
    4. line.width = Cm( 0.1)
    • 1
  • 设置文本框文字样式

    
       
       
    1. # 获取文本框文字对象
    2. tf = textBox.text_frame
    3. # 文本框样式调整
    4. tf.margin_bottom = Cm( 0.1)  # 下边距
    5. tf.margin_left =  0  # 左边距
    6. tf.vertical_anchor = MSO_VERTICAL_ANCHOR.BOTTOM  # 垂直方式:底端对齐
    7. tf.word_wrap = True  # 文本框的文字自动对齐
    • 1

    指定文本在文本框架中的垂直对齐方式。与TextFrame对象的.vertical_anchor属性一起使用。请注意,vertical_anchor属性也可以具有值None,表示没有直接指定的垂直锚设置,并且其有效值是从占位符继承的(如果有一个或从主题继承)。也可以不指定任何内容来删除明确指定的垂直锚设置。

    
       
       
    1. from pptx.enum.text  import MSO_ANCHOR
    2. cell = table.cell(row_idx= 2, col_idx= 3)
    3. cell.vertical_anchor = MSO_ANCHOR.BOTTOM
    • 1
    13ffeead024c2d7f1d94f89c4672d6b1.png
    
       
       
    1. TOP
    2. Aligns text to top of text frame and inherits its value from its layout placeholder or theme.
    3. MIDDLE
    4. Centers text vertically
    5. BOTTOM
    6. Aligns text to bottom of text frame
    7. MIXED
    8. Return value only; indicates a combination of the other states.
    • 1
    • 垂直对齐

  • 设置文本框内容

    
       
       
    1. # 设置内容
    2. tf.paragraphs[ 0].text =  '这是一段文本框里的文字'
    • 1
  • 字体样式调整

    
       
       
    1. # 字体样式调整
    2. tf.paragraphs[ 0].alignment = PP_ALIGN.CENTER  # 对齐方式
    3. tf.paragraphs[ 0].font.name =  '微软雅黑'  # 字体名称
    4. tf.paragraphs[ 0].font.bold = True  # 是否加粗
    5. tf.paragraphs[ 0].font.italic = True  # 是否斜体
    6. tf.paragraphs[ 0].font.color.rgb = RGBColor( 25500)  # 字体颜色
    7. tf.paragraphs[ 0].font.size = Pt( 20)  # 字体大小
    • 1
    
       
       
    1. from pptx.enum.text  import PP_ALIGN
    2. shape.paragraphs[ 0].alignment = PP_ALIGN.CENTER
    • 1
    33bf73643d852f3013317c31a3016c61.png
    • 文字对齐


 
 
  1. CENTER
  2.   Center align
  3.  DISTRIBUTE
  4.   Evenly distributes e.g. Japanese characters from left to right within a line
  5.  JUSTIFY
  6.   Justified, i.e. each line both begins and ends at the margin with spacing between words adjusted such that the line exactly fills the width of the paragraph.
  7.  JUSTIFY_LOW
  8.   Justify using a small amount of space between words.
  9.  LEFT
  10.   Left aligned
  11.  RIGHT
  12.   Right aligned
  13.  THAI_DISTRIBUTE
  14.   Thai distributed
  15.  MIXED
  16.   Return value only; indicates multiple paragraph alignments are present in a set of paragraphs.
  • 1
  • 保存ppt


 
 
  1. # 保存ppt
  2.   ppt.save( '4.1.2 设置文字框与字体样式.pptx')
  • 1

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

示例代码:


 
 
  1. from pptx  import Presentation
  2. from pptx.util  import Pt,Cm
  3. from pptx.dml.color  import RGBColor
  4. from pptx.enum.text  import MSO_ANCHOR
  5. from pptx.enum.text  import PP_ALIGN
  6. # 设置需要添加到哪一页
  7. n_page =  0
  8. # 打开已存在ppt
  9. ppt = Presentation( '4. python-pptx操作模板.pptx')
  10. # 获取slide对象
  11. slide = ppt.slides[n_page]
  12. # 设置表格位置和大小
  13. left, top, width, height = Cm( 6), Cm( 12), Cm( 13.6), Cm( 5)
  14. # 表格行列数,和大小
  15. shape = slide.shapes.add_table( 67, left, top, width, height)
  16. # 获取table对象
  17. table = shape.table
  18. # 设置列宽
  19. table.columns[ 0].width = Cm( 3)
  20. table.columns[ 1].width = Cm( 2.3)
  21. table.columns[ 2].width = Cm( 2.3)
  22. table.columns[ 3].width = Cm( 1.3)
  23. table.columns[ 4].width = Cm( 1.3)
  24. table.columns[ 5].width = Cm( 1.3)
  25. table.columns[ 6].width = Cm( 2.1)
  26. # 设置行高
  27. table.rows[ 0].height = Cm( 1)
  28. # 合并首行
  29. table.cell( 00).merge(table.cell( 06))
  30. # 填写标题
  31. table.cell( 10).text = 时间
  32. table.cell( 11).text = 阶段
  33. table.cell( 12).text = 执行用例
  34. table.cell( 13).text = 新增问题
  35. table.cell( 14).text = 问题总数
  36. table.cell( 15).text = 遗留问题
  37. table.cell( 16).text = 遗留致命/ \
  38.                         严重问题
  39. # 填写变量内容
  40. table.cell( 00).text = 产品 1
  41. content_arr = [[ 4/ 30 -5/ 14, DVT1,  201222255],
  42.                [ 5/ 15 -5/ 21, DVT1,  253242308],
  43.                [ 5/ 22 -6/ 28, DVT1,  127375612],
  44.                [ 5/ 22 -6/ 28, DVT1,  127375612]]
  45. # 修改表格样式
  46. for rows in  range( 6):
  47.      for cols in  range( 7):
  48.         # Write column titles
  49.          if rows ==  0:
  50.             # 设置文字大小
  51.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.size = Pt( 15)
  52.             # 设置字体
  53.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.name =  '微软雅黑'
  54.             # 设置文字颜色
  55.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.color.rgb = RGBColor( 255255255)
  56.             # 设置文字左右对齐
  57.             table.cell(rows, cols).text_frame.paragraphs[ 0].alignment = PP_ALIGN.CENTER
  58.             # 设置文字上下对齐
  59.             table.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLE
  60.             # 设置背景为填充
  61.             table.cell(rows, cols).fill.solid()
  62.             # 设置背景颜色
  63.             table.cell(rows, cols).fill.fore_color.rgb = RGBColor( 34134165)
  64.         elif rows ==  1:
  65.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.size = Pt( 10)
  66.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.name =  '微软雅黑'  # 字体名称
  67.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.color.rgb = RGBColor( 000)
  68.             table.cell(rows, cols).text_frame.paragraphs[ 0].alignment = PP_ALIGN.CENTER
  69.             table.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLE
  70.             table.cell(rows, cols).fill.solid()
  71.             table.cell(rows, cols).fill.fore_color.rgb = RGBColor( 204217225)
  72.          else:
  73.             table.cell(rows, cols).text = content_arr[rows -  2][cols]
  74.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.size = Pt( 10)
  75.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.name =  '微软雅黑'  # 字体名称
  76.             table.cell(rows, cols).text_frame.paragraphs[ 0].font.color.rgb = RGBColor( 000)
  77.             table.cell(rows, cols).text_frame.paragraphs[ 0].alignment = PP_ALIGN.CENTER
  78.             table.cell(rows, cols).vertical_anchor = MSO_ANCHOR.MIDDLE
  79.             table.cell(rows, cols).fill.solid()
  80.             table.cell(rows, cols).fill.fore_color.rgb = RGBColor( 204217225)
  81. ppt.save( '4.2 python-pptx 添加表格并设置样式.pptx')
  • 1

效果如下:

0947477f655ab95039398ec4c73881d9.png

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

示例代码:


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

效果如下:

d873fb3c3a5fec643cf415d4ee272a93.png

其它图表可参考:https://www.cnblogs.com/adam012019/p/11348938.html

4.4 python-pptx 添加形状并设置样式

这里的形状可以是这些:

6c0fd7e9cfe01e3a159eb655f30134ea.png

形状别名可以再这里查看:

https://docs.microsoft.com/zh-cn/office/vba/api/Office.MsoAutoShapeType

5ba815737cbd11760a21b73c06cff7eb.png

并对应这里,找到正确的枚举名:

https://python-pptx.readthedocs.io/en/latest/api/enum/MsoAutoShapeType.html#msoautoshapetype

83db25a8e8d1cdefd89ca237cc4cbe6a.png

程序示例:


 
 
  1. from pptx  import Presentation
  2. from pptx.util  import Pt,Cm
  3. from pptx.dml.color  import RGBColor
  4. from pptx.enum.text  import PP_ALIGN
  5. from pptx.enum.shapes  import MSO_SHAPE
  6. # 设置需要添加到哪一页
  7. n_page =  0
  8. # 打开已存在ppt
  9. ppt = Presentation( '4. python-pptx操作模板.pptx')
  10. # 获取slide对象
  11. slide = ppt.slides[n_page]
  12. # 添加矩形
  13. # 设置位置以及大小
  14. left, top, width, height = Cm( 2.5), Cm( 4.5), Cm( 30), Cm( 0.5)
  15. # 添加形状
  16. rectangle = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left, top, width, height)
  17. # 设置背景填充
  18. rectangle.fill.solid()
  19. # 设置背景颜色
  20. rectangle.fill.fore_color.rgb = RGBColor( 34134165)
  21. # 设置边框颜色
  22. rectangle.line.color.rgb = RGBColor( 34134165)
  23. # 添加正三角+文字(正常)
  24. left, top, width, height = Cm( 3), Cm( 5.1), Cm( 0.5), Cm( 0.4)
  25. slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_EXTRACT, left, top, width, height)
  26. new_paragraph = slide.shapes.add_textbox(left=left - Cm( 0.95), top=top + Cm( 0.4), width=Cm( 2.4),height=Cm( 1.1)).text_frame
  27. content =  2020/ 01/ 05
  28. 内容 1
  29. new_paragraph.paragraphs[ 0].text = content
  30. new_paragraph.paragraphs[ 0].font.size = Pt( 10)  # 文字大小
  31. new_paragraph.paragraphs[ 0].alignment = PP_ALIGN.CENTER
  32. # 添加正三角+文字(延期)
  33. left, top, width, height = Cm( 9), Cm( 5.1), Cm( 0.5), Cm( 0.4)
  34. extract = slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_EXTRACT, left, top, width, height)
  35. extract.fill.solid()
  36. extract.fill.fore_color.rgb = RGBColor( 25500)
  37. extract.line.color.rgb = RGBColor( 25500)
  38. new_paragraph = slide.shapes.add_textbox(left=left - Cm( 0.95), top=top + Cm( 0.4), width=Cm( 2.4),height=Cm( 1.1)).text_frame
  39. content =  2020/ 01/ 05
  40. 内容 2
  41. new_paragraph.paragraphs[ 0].text = content  # 文字内容
  42. new_paragraph.paragraphs[ 0].font.size = Pt( 10)  # 文字大小
  43. new_paragraph.paragraphs[ 0].font.color.rgb = RGBColor( 25500)    # 文字颜色
  44. new_paragraph.paragraphs[ 0].alignment = PP_ALIGN.CENTER # 文字水平对齐方式
  45. # 添加倒三角+间隔条+文字
  46. left, top, width, height = Cm( 5), Cm( 4), Cm( 0.5), Cm( 0.4)
  47. slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_MERGE, left, top, width, height)
  48. gap = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left + Cm( 0.2), top + Cm( 0.5), Cm( 0.05), Cm( 0.5))
  49. gap.fill.solid()
  50. gap.fill.fore_color.rgb = RGBColor( 255255255)
  51. gap.line.color.rgb = RGBColor( 255255255)
  52. new_paragraph = slide.shapes.add_textbox(left=left - Cm( 0.95), top=top - Cm( 1), width=Cm( 2.4),height=Cm( 1.1)).text_frame
  53. content =  2020/ 01/ 05
  54. 内容 3
  55. new_paragraph.paragraphs[ 0].text = content
  56. new_paragraph.paragraphs[ 0].font.size = Pt( 10)  # 文字大小
  57. new_paragraph.paragraphs[ 0].alignment = PP_ALIGN.CENTER
  58. # 添加当前时间图形
  59. left, top, width, height = Cm( 7), Cm( 4), Cm( 0.5), Cm( 0.4)
  60. now = slide.shapes.add_shape(MSO_SHAPE.DOWN_ARROW, left, top, width, height)
  61. now.fill.solid()
  62. now.fill.fore_color.rgb = RGBColor( 25415247)
  63. now.line.color.rgb = RGBColor( 25415247)
  64. ppt.save( '4.4 python-pptx 添加形状并设置样式.pptx')
  65. print( '进度条添加完成')
  • 1

效果如下:

08cb8c0f9e86fc980163fb70a186a4b4.png

5.seaborn绘图库介绍与使用

官方网址:http://seaborn.pydata.org/

6e5f697fb946066d53196a3bca8dc100.png
  • seaborn是基于Matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形

  • 只是在Matplotlib上进行了更高级的API封装,从而使作图更加容易

  • seaborn是针对统计绘图的,能满足数据分析90%的绘图需求,需要复杂的自定义图形还需要使用到Matplotlib

5.1 pip安装seaborn

pip install seaborn
 
 
  • 1

效果如下(我的显示已安装):

663f7e7be418938e4aa8443517f77a86.png

使用:


 
 
  1. import seaborn as sns 
  2. # 或者
  3. import seaborn
  • 1

使用数据集:


 
 
  1. import seaborn as sns
  2. tips = sns.load_dataset(tips)
  • 1

无法连接:

4e30ed4bca3af45ca83f6edef3cb8bd4.png 13317f444d70b7ae17ea948088a22519.png

下载数据集:

https://github.com/mwaskom/seaborn-data

放到本地:

decfbfe39f27239945a7f8ad6271d0fd.png

运行程序:


 
 
  1. import seaborn as sns
  2. tips = sns.load_dataset(tips)
  3. print(tips:,tips)
  4. print(ype(tips):, type(tips))
  • 1

效果如下:

ac5842516e8cc2be89015c128041b995.png

参考博客:

《解决seaborn导入数据集出现错误》

https://blog.csdn.net/qq_33828738/article/details/107044082

5.2 seaborn绘制折线图

5.2.1 通过relplot来实现

示例代码:


 
 
  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 数据集
  4. data = sns.load_dataset(fmri)
  5. print(data.head())
  6. # 绘画折线图
  7. sns.relplot(x=timepoint, y=signal, kind=line, data=data, ci=None)
  8. # 显示
  9. plt.show()
  • 1

效果如下:

2378b4006fdd60877730448a135bceeb.png
5.2.2 通过lineplot()函数来实现

示例代码:


 
 
  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 数据集
  4. data = sns.load_dataset(fmri)
  5. print(data.head())
  6. # 绘画折线图:
  7. sns.lineplot(x=timepoint, y=signal, data=data, ci= 95)
  8. # 显示
  9. plt.show()
  • 1

效果如下:

b9935d40e5119df4f2f1d4226eda3752.png
5.2.3 多坐标效果

示例代码:


 
 
  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 数据集
  4. data = sns.load_dataset(fmri)
  5. print(data.head())
  6. # 绘画折线图
  7. f, axes = plt.subplots(nrows= 1, ncols= 2, figsize=( 146))
  8. sns.lineplot(x=timepoint, y=signal, data=data, ci=None, ax=axes[ 0])
  9. sns.lineplot(x=timepoint, y=signal, hue=region, style=event, data=data, ci=None, ax=axes[ 1])
  10. plt.show()
  • 1

效果如下:

58ca2f1ee73aa95b301dc0c08b0b2b6b.png
5.2.4 保存生成的图片

注意:需要在plt.show()之前调用savefig,不然保存的图片就是一片空白


 
 
  1. plt.savefig( 'seaborn生成的图片.png')
  2. plt.show()
  • 1

效果如下:

3d13520b43b4a260e875b2dd44d6e20b.png 101c0ac06796a3c529bb0ffd2c67431f.png

5.3 seaborn replot 绘制散点图

ff7c5ec1525c46c23e94f652f9347c54.png

示例代码:


 
 
  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 准备数据:自带数据集
  4. tips = sns.load_dataset(tips)
  5. print(tips.head())
  6. # 绘画散点图
  7. sns.relplot(x=total_bill, y=tip, data=tips, hue=sex, style=smoker, size=size)
  8. sns.relplot(x=total_bill, y=tip, data=tips, hue=sex, style=smoker, size=size, sizes=( 100100))
  9. # 显示
  10. plt.show()
  • 1

效果如下:

0516180d6e7d9105accf87c816f8a59a.png

5.4 seaborn barplot绘制柱状图

  • 垂直

示例代码:


 
 
  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 显示正负号与中文不显示问题
  4. plt.rcParams[ 'axes.unicode_minus'] = False
  5. sns.set_style( 'darkgrid', { 'font.sans-serif':[ 'SimHei''Arial']})
  6. # 去除部分warning
  7. import warnings
  8. warnings.filterwarnings( 'ignore')
  9. plt.figure(dpi= 150)
  10. x = [ '金融', '农业', '制造业', '新能源']
  11. y = [ 1648612653]
  12. sns.barplot(x, y)
  13. plt.show()
  • 1

效果如下:

36bfce07d8c9ee43dc16ededab43635a.png
  • 水平

调换横纵坐标位置即可


 
 
  1. plt.figure(dpi= 150)
  2. x = [ '金融', '农业', '制造业', '新能源']
  3. y = [ 1648612653]
  4. sns.barplot(y,x )
  5. plt.show()
  • 1
a1aa148308c141db260a99a62cb3d944.png

6.python-pptx 插入图片

前提条件:

edf000184fdd11fdb19a6eff2bfa4ed5.png

示例代码:


 
 
  1. from pptx  import Presentation
  2. from pptx.util  import Pt,Cm
  3. # 打开已存在ppt
  4. ppt = Presentation( '6.python-pptx操作模板.pptx')
  5. # 设置添加到当前ppt哪一页
  6. n_page =  0
  7. # 获取需要添加文字的页面对象
  8. slide = ppt.slides[n_page]
  9. # 设置待添加的图片
  10. img_name  =  'seaborn生成的图片.png'
  11. # 设置位置
  12. left, top, width, height = Cm( 6), Cm( 6), Cm( 20), Cm( 9)
  13. # 进行添加
  14. slide.shapes.add_picture(image_file=img_name,left=left,top=top,width=width,height=height)
  15. # 保存ppt
  16. ppt.save( '6.python-pptx 插入图片.pptx')
  • 1

效果如下:

731715a25af046ec5e9b720447a3815b.png a5f63fabde9dfde9940aa609ff7bca6b.png

7.python-pptx 读取数据

前提条件:

准备好一张有内容的ppt

18d2fbd7ad0cd351bb4a8a6f087f7ac9.png

示例代码:


 
 
  1. from pptx  import Presentation
  2. from pptx.enum.shapes  import MSO_SHAPE_TYPE
  3. # 打开待读取的ppt文件
  4. ppt = Presentation( '研发管理部检测部周报2020-09-17.pptx')
  5. # 获取第 0
  6. slide0 = ppt.slides[ 0]
  7. # 遍历所有内容
  8. for shape in slide0.shapes:
  9.     # 打印shape名称
  10.      print(shape.shape_type)
  11.     # 判断是否为表格
  12.      if shape.shape_type == MSO_SHAPE_TYPE.TABLE:
  13.         #获取表格行
  14.          for row in shape.table.rows:
  15.              for cell in row.cells:
  16.                  print(cell.text_frame.text)
  • 1

效果如下:

将当前幻灯片页面中的对象名称和表格内容全部打印出来了,反之,我们对其进行复制,就是写操作。

c4905a321517c38eb4234226920d6e75.png 5936a95de2de9c6319d99a15951399ef.png

以上就是本期为大家整理的全部内容了,喜欢的朋友可以6eae049d3b374190c148c4f15e641053.png点赞、点在看18897fb9449cbba6fdaa0a759c1b4fb1.png也可以分享到朋友圈让更多人知道哦

 
 
 
 

近期文章

 


 
 
  1. NO .1往期推荐Historical articles
  2. 用Python复现机器学习中 12种经典降维算法
  3. 【优质干货】这里有个Python模块,绘制出超级惊艳的可视化动图
  4. 【优质原创】介绍一个效率爆表的探索性数据分析插件
  5. 【原创内容】介绍一款进阶版的Pandas数据分析神器:Polars
  6. 分享、收藏、点赞、在看安排一下?
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1001756
推荐阅读
相关标签
  

闽ICP备14008679号