用Python自动化制作、操作PPT,看完这篇文章就够了!

python-pptx生成PPT报告 存在这样一个需求,需要使用数据渲染生成一个PPT报告。经过一番查询,笔者决定使用python-pptx来完成这个需求。python-pptx作为一个功能强大的第三方库,完全可以满足笔者的需求。以上就是今天要讲的内容,本文给出了生成PPT的一个解决方案,可以通过替换元素数据内容的方式生成一个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   

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

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进行复制没有找到合适的方法,有以下两种解决办法:

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

  2. 增加模板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.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')   

效果如下:

4.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')   

效果如下:

代码详解

  • 添加文本框

    # 添加文字框 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)   
    

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

  • 设置文本框边框样式

    # 文本框边框样式调整   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  # 文本框的文字自动对齐   
    

    “

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

    from pptx.enum.text import MSO_ANCHOR      cell = table.cell(row_idx=2, col_idx=3)   cell.vertical_anchor = MSO_ANCHOR.BOTTOM   
    

    TOP   Aligns text to top of text frame and inherits its value from its layout placeholder or theme.   MIDDLE   Centers text vertically   BOTTOM   Aligns text to bottom of text frame   MIXED   Return value only; indicates a combination of the other states.   
    
  • 垂直对齐

  • 设置文本框内容

    # 设置内容   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)  # 字体大小   
    
    from pptx.enum.text import PP_ALIGN      shape.paragraphs[0].alignment = PP_ALIGN.CENTER   
    

  • 文字对齐

  `CENTER     Center align     DISTRIBUTE     Evenly distributes e.g. Japanese characters from left to right within a line     JUSTIFY     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.     JUSTIFY_LOW     Justify using a small amount of space between words.     LEFT     Left aligned     RIGHT     Right aligned     THAI_DISTRIBUTE     Thai distributed     MIXED     Return value only; indicates multiple paragraph alignments are present in a set of paragraphs.`
  • 保存ppt
  `# 保存ppt     ppt.save('4.1.2 设置文字框与字体样式.pptx')`

4.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 titles           if 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.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(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.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(204, 217, 225)      ppt.save('4.2 python-pptx 添加表格并设置样式.pptx')   

效果如下:

4.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   ).chart         chart.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('折线图添加完成')   

效果如下:

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

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

这里的形状可以是这些:

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

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

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

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

程序示例:

from pptx import Presentation   from pptx.util import Pt,Cm   from pptx.dml.color import RGBColor   from pptx.enum.text import PP_ALIGN   from pptx.enum.shapes import MSO_SHAPE         # 设置需要添加到哪一页   n_page = 0      # 打开已存在ppt   ppt = Presentation('4. python-pptx操作模板.pptx')      # 获取slide对象   slide = ppt.slides[n_page]      # 添加矩形   # 设置位置以及大小   left, top, width, height = Cm(2.5), Cm(4.5), Cm(30), Cm(0.5)   # 添加形状   rectangle = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left, top, width, height)   # 设置背景填充   rectangle.fill.solid()   # 设置背景颜色   rectangle.fill.fore_color.rgb = RGBColor(34, 134, 165)   # 设置边框颜色   rectangle.line.color.rgb = RGBColor(34, 134, 165)      # 添加正三角+文字(正常)   left, top, width, height = Cm(3), Cm(5.1), Cm(0.5), Cm(0.4)   slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_EXTRACT, left, top, width, height)   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   content = """2020/01/05   内容1"""   new_paragraph.paragraphs[0].text = content   new_paragraph.paragraphs[0].font.size = Pt(10)  # 文字大小   new_paragraph.paragraphs[0].alignment = PP_ALIGN.CENTER      # 添加正三角+文字(延期)   left, top, width, height = Cm(9), Cm(5.1), Cm(0.5), Cm(0.4)   extract = slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_EXTRACT, left, top, width, height)   extract.fill.solid()   extract.fill.fore_color.rgb = RGBColor(255, 0, 0)   extract.line.color.rgb = RGBColor(255, 0, 0)      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   content = """2020/01/05   内容2"""   new_paragraph.paragraphs[0].text = content  # 文字内容   new_paragraph.paragraphs[0].font.size = Pt(10)  # 文字大小   new_paragraph.paragraphs[0].font.color.rgb = RGBColor(255, 0, 0)    # 文字颜色   new_paragraph.paragraphs[0].alignment = PP_ALIGN.CENTER # 文字水平对齐方式      # 添加倒三角+间隔条+文字   left, top, width, height = Cm(5), Cm(4), Cm(0.5), Cm(0.4)   slide.shapes.add_shape(MSO_SHAPE.FLOWCHART_MERGE, left, top, width, height)   gap = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left + Cm(0.2), top + Cm(0.5), Cm(0.05), Cm(0.5))   gap.fill.solid()   gap.fill.fore_color.rgb = RGBColor(255, 255, 255)   gap.line.color.rgb = RGBColor(255, 255, 255)      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   content = """2020/01/05   内容3"""   new_paragraph.paragraphs[0].text = content   new_paragraph.paragraphs[0].font.size = Pt(10)  # 文字大小   new_paragraph.paragraphs[0].alignment = PP_ALIGN.CENTER      # 添加当前时间图形   left, top, width, height = Cm(7), Cm(4), Cm(0.5), Cm(0.4)   now = slide.shapes.add_shape(MSO_SHAPE.DOWN_ARROW, left, top, width, height)   now.fill.solid()   now.fill.fore_color.rgb = RGBColor(254, 152, 47)   now.line.color.rgb = RGBColor(254, 152, 47)      ppt.save('4.4 python-pptx 添加形状并设置样式.pptx')   print('进度条添加完成')   

效果如下:

5.seaborn绘图库介绍与使用

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

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

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

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

5.1 pip安装seaborn

pip install seaborn   

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

使用:

import seaborn as sns    # 或者   import seaborn   

使用数据集:

import seaborn as sns      tips = sns.load_dataset("tips")   

无法连接:

下载数据集:

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

放到本地:

运行程序:

import seaborn as sns      tips = sns.load_dataset("tips")      print("tips:",tips)   print("ype(tips):",type(tips))   

效果如下:

参考博客:

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

https://blog.youkuaiyun.com/qq_33828738/article/details/107044082

5.2 seaborn绘制折线图

5.2.1 通过relplot来实现

示例代码:

import matplotlib.pyplot as plt   import seaborn as sns      # 数据集   data = sns.load_dataset("fmri")   print(data.head())   # 绘画折线图   sns.relplot(x="timepoint", y="signal", kind="line", data=data, ci=None)   # 显示   plt.show()   

效果如下:

5.2.2 通过lineplot()函数来实现

示例代码:

import matplotlib.pyplot as plt   import seaborn as sns      # 数据集   data = sns.load_dataset("fmri")   print(data.head())   # 绘画折线图:   sns.lineplot(x="timepoint", y="signal", data=data, ci=95)   # 显示   plt.show()   

效果如下:

5.2.3 多坐标效果

示例代码:

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

效果如下:

5.2.4 保存生成的图片

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

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

效果如下:

5.3 seaborn replot 绘制散点图

示例代码:

import matplotlib.pyplot as plt   import seaborn as sns      # 准备数据:自带数据集   tips = sns.load_dataset("tips")   print(tips.head())      # 绘画散点图   sns.relplot(x="total_bill", y="tip", data=tips, hue="sex", style="smoker", size="size")   sns.relplot(x="total_bill", y="tip", data=tips, hue="sex", style="smoker", size="size", sizes=(100, 100))   # 显示   plt.show()   

效果如下:

5.4 seaborn barplot绘制柱状图

  • 垂直

示例代码:

import matplotlib.pyplot as plt   import seaborn as sns      # 显示正负号与中文不显示问题   plt.rcParams['axes.unicode_minus'] = False   sns.set_style('darkgrid', {'font.sans-serif':['SimHei', 'Arial']})      # 去除部分warning   import warnings   warnings.filterwarnings('ignore')      plt.figure(dpi=150)   x = ['金融','农业','制造业','新能源']   y = [164, 86, 126, 53]   sns.barplot(x, y)      plt.show()   

效果如下:

  • 水平

调换横纵坐标位置即可

plt.figure(dpi=150)   x = ['金融','农业','制造业','新能源']   y = [164, 86, 126, 53]   sns.barplot(y,x )   plt.show()   

6.python-pptx 插入图片

前提条件:

示例代码:

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

效果如下:

7.python-pptx 读取数据

前提条件:

准备好一张有内容的ppt

示例代码:

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

效果如下:

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

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。让你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

点击免费领取《优快云大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取

使用Python从头开始创建PowerPoint演示文稿 通过本文,我们详细介绍了如何使用Python和python-pptx库从头开始创建PowerPoint演示文稿,包括环境搭建、基础知识、幻灯片添加、内容设置以及高级应用如批量生成演示文稿。这些技能不仅可以提高我们的工作效率,还能在数据分析和报告制作中发挥重要作用。未来,随着python-pptx库的不断发展和完善,我们可以期待更多高级功能的加入,如动画效果、更复杂的图表类型、以及与其他Python库的集成等。这将进一步拓展Python在办公自动化领域的应用范围,为我们的工作带来更多便利和高效。 阅读详情

相关推荐

Python : 一文学会办公自动化(Word、Excel、PPT)

自动化: 1946年提出,被运用于军事等方面。 办公自动化指的是现在办公和计算机技术结合起来的新型的办公的方式。 “高效的工作”正是自动化解决的问题/ 办公自动化的分类: 操作Excel: 就业数据分析等 操作Word: 考试系统生成Word试卷等 操作PPT : 用户画像分析等 使用的模块: xlrd模块 xlwt模块 smtplib模块 pywin32模块 python-ppt模块 python-docx模块 pymysql模块 xlsxwriter模块 1. xlrd模块

手写我对你的温柔 5725

利用Python自动生成PPT的示例详解

在日常工作中,PPT制作是常见的工作,如果制作创意类PPT,则无法通过自动化的形式生成,因为创意本身具有随机性,而自动化解决的是重复性工作,两者有所冲突。python-pptx是python处理PPT的一个库,注重的是读和写,无法导出,没有渲染功能。ppt里面处理的主要对象一般为文本框,表格,图片。

weixin_72959097的博客 3593

Python办公自动化之PPT幻灯片自动化:使用Python制作PPT 操作PPT

文章目录前言1.PPT自动化能干什么?有什么优势?2.使用win32com操作ppt2.1 pip安装win32com2.2 win32com复制ppt模板3.python-pptx 创建PPT、复制页面3.1 pip安装python-pptx3.2 python-pptx 复制页面3.3 python-pptx 删除页面3.4 新建页面4.python-pptx 插入文字、表格、形状并设置样式4.1 python-pptx 添加文字并设置样式4.1.1 添加单行文字与多行文字4.1.2 设置文字框样式与文

超级大洋葱的博客 7636

Python 自动化办公:一键批量生成 PPT

在实际工作中,经常需要批量处理Office文件,比如需要制作一个几十页的PPT进行产品介绍时,一页一页地制作不仅麻烦而且格式可能不统一。那么有什么办法可以一键生成PPT呢?Python提供的pptx 包就可以用来自动化处理ppt。是一个用于创建和编辑Microsoft PowerPoint(.pptx) 文件的Python库。它能够自动生成演示文稿、幻灯片和幻灯片中的内容,如文本、图片、表格和图表。以下是一些常用的命令和功能的简介。

xiaoganbuaiuk的博客 1810

CCF201803-2 碰撞的小球 python

一些话:已经不知道是第几次做这道题了(大概第三次吧),真的常做常新,每次都有新的细节想法。虽然方法简单粗暴,但好在方便理解,对于我这种菜鸟选手而言。 但在做的过程中,最开始还忽略了输入的小球初始位置有可能是无序的,输出的时候要保持相对位置。CCF真的考验细节,希望上考场时能够认真仔细一点。就酱… #碰撞的小球 #当小球坐标为0或L时,会朝相反方向移动 #当两个小球坐标相等时,会分别转向相反的方向 #计算t秒之后小球的位置 n,L,t = map(int,input().split()) location .

tanya_dre的博客 350

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 241

用Python自动化操作PPT,看完这篇文章就够了!

官方网址:http://seaborn.pydata.org/seaborn是基于Matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形只是在Matplotlib上进行了更高级的API封装,从而使作图更加容易seaborn是针对统计绘图的,能满足数据分析90%的绘图需求,需要复杂的自定义图形还需要使用到Matplotlib。

python122_的博客 1148

深入解析高通8155平台音频数据流:从HAL到DSP的完整链路

本文深入解析了高通8155平台音频数据从安卓HAL层到DSP的完整传输链路。以播放场景为例,详细阐述了音频数据如何通过ASoC DPCM框架进行路由、打包,并经由APR协议与DSP交互,最终驱动硬件发声的核心流程,为车载音频系统开发与调试提供了清晰的框架。

rust6ferris的博客 1174

用Python自动化制作、操作PPT,看完这篇文章就会了!

官方网址:http://seaborn.pydata.org/seaborn是基于Matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形只是在Matplotlib上进行了更高级的API封装,从而使作图更加容易seaborn是针对统计绘图的,能满足数据分析90%的绘图需求,需要复杂的自定义图形还需要使用到Matplotlib。

python03012的博客 1733

STM32HAL库学习笔记九——LCD显示

本文不会对驱动编写做特别详细的描述,以记录CubeMX的部署流程为主。

weixin_44762233的博客 6918

修改Windows hosts文件的解决方案

本文主要介绍了修改Windows hosts文件解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 安装软件 2.2 修改hosts文件

weixin_43178406的博客 1万+

Python自动化操作PPT看这一篇就够了

作者:超级大洋葱806https://tangxing.blog.youkuaiyun.com/article/details/1095688301.PPT自动化能干什么?有什么优势?它可以代替你自...

Python小二 1万+

【YOLO11改进 - 注意力机制】SCSA通过结合空间注意力和通道注意力,提高各种下游视觉任务的性能。

【YOLO11改进 - 注意力机制】SCSA通过结合空间注意力和通道注意力,提高各种下游视觉任务的性能。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 475

python自动化办公之python操作PPT

python自动化文章一直深受广大python爱好者的青睐。基于此,我花了整整一周时间真理出来的python自动化文档手册,涉及到五个章节(如下图所示),① python使用openpyxl操作excel;② python使用PyPDF2和pdfplumber操作pdf;③ python使用python-docx操作word;④ python使用python-pptx操作PPT;⑤ python如何自动收发邮件;⑥ python制作电话号码归属地查询工具。

数据分析与统计学之美 2万+

【异常】Cursor IDE 扩展主机超时错误处理文档The agent execution provider did not respond within 4 seconds.

该错误通常是 Cursor IDE 的临时性问题,不影响项目代码。大多数情况下,重新加载窗口或重启 IDE 即可解决。如果问题持续,可按上述进阶方案排查。重新加载窗口(最快)重启 IDE检查系统资源清理缓存检查扩展更多关于 AI+教育领域的干货,可以关注我的微信公众号第一时间获取哦~

奶爸的编程之路,也就一周冷个三天 2700

ROS局部路径规划器插件teb_local_planner流程梳理(上)

在我之前的文章《ROS导航包Navigation中的 Movebase节点路径规划相关流程梳理》中已经介绍过Move_base节点调用局部路径规划器插件的接口函数是computeVelocityCommands,接下来,我们就从这个函数入手梳理一下teb_local_planner功能包的工作流程。

慕羽★的博客 5165

第十三篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作PPT

Python自动化操作PowerPoint是指利用Python编程语言以及相关的第三方库来实现对Microsoft PowerPoint演示文稿(.ppt或.pptx文件)的创建、编辑、批量处理、数据分析、格式调整、内容插入、动画控制、模板应用、合并拆分等任务的自动化操作。这种方法可以显著提高工作效率,减少重复劳动,并实现精确、可编程的PPT管理与生成。创建新PPT:使用可以轻松创建一个新的演示文稿,设置其主题、版式,添加多张幻灯片,并指定每张幻灯片的布局。编辑现有PPT。

jackchuanqi的博客 4076

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

2W+字系统讲解如何用Python自动化操作PPT,学懂这篇文章就够了

大家好,之前给大家分享过用Python办公自动化系列:Python 自动化操作Excel、PDF,今天给大家分享用Python自动化操作PPT,本文内容较长,喜欢记得关注、收藏、点赞。 【注】文末提供资料和交流方式 1.PPT自动化能干什么?有什么优势? 它可以代替你自动制作PPT 它可以减少你调整用于调整PPT格式的时间 它可以让数据报告风格一致 总之就是:它能提高你的工作效率!让你有更多时间去做其他事情! 2.使用win32com操作ppt 官方文档:https://docs.mic

Python学习与数据挖掘 3356

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 5个Python自动化探索性数据分析库
下一篇: 程序员必备的15个接单平台,拥有即获得“钞能力”!
大模型-小原
博客等级 码龄4年 2689粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值