python生成ppt的方法


Posted in Python onJune 07, 2018

本文主要介绍如何通过python生成ppt文件,以及借助ppt模板来生成ppt

环境

python 3
python-pptx

安装

pip3 install python-pptx

将文字输出到ppt

效果图

python生成ppt的方法

代码

from pptx import Presentation

# 创建幻灯片 ------
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)

title = slide.shapes.title
subtitle = slide.placeholders[1]

# 设置标题和副标题
title.text = "Hello, World!"
subtitle.text = "pip install python-pptx"

prs.save("test.pptx")

图表输出到ppt

效果图

python生成ppt的方法

代码

from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches

# 创建幻灯片 ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])

# 定义图表数据 ---------------------
chart_data = ChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Series 1', (19.2, 21.4, 16.7))

# 将图表添加到幻灯片 --------------------
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
slide.shapes.add_chart(
  XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)

prs.save('chart-01.pptx')

使用ppt模板来生成ppt

  • 准备ppt模板(网络下载或自定义幻灯片母版)
  • 加载ppt模板,并使用指定幻灯片样式
  • 添加数据并生成新ppt

效果图

python生成ppt的方法

代码

from pptx import Presentation
from pptx.util import Inches
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Cm #Inches
from pptx.enum.chart import XL_LEGEND_POSITION

if __name__ == '__main__':
  # 创建幻灯片 ------
  prs = Presentation('template.pptx')
  title_only_slide_layout = prs.slide_layouts[5]
  slide = prs.slides.add_slide(title_only_slide_layout)
  shapes = slide.shapes

  shapes.title.text = '报告'

  # 定义表格数据 ------
  name_objects = ["object1", "object2", "object3"]
  name_AIs = ["AI1", "AI2", "AI3"]
  val_AI1 = (19.2, 21.4, 16.7)
  val_AI2 = (22.3, 28.6, 15.2)
  val_AI3 = (20.4, 26.3, 14.2)
  val_AIs = [val_AI1, val_AI2, val_AI3]

  # 表格样式 --------------------
  rows = 4
  cols = 4
  top  = Cm(12.5)
  left  = Cm(3.5) #Inches(2.0)
  width = Cm(24) # Inches(6.0)
  height = Cm(6) # Inches(0.8)

  # 添加表格到幻灯片 --------------------
  table = shapes.add_table(rows, cols, left, top, width, height).table

  # 设置单元格宽度
  table.columns[0].width = Cm(6)# Inches(2.0)
  table.columns[1].width = Cm(6)
  table.columns[2].width = Cm(6)
  table.columns[3].width = Cm(6)

  # 设置标题行
  table.cell(0, 1).text = name_objects[0]
  table.cell(0, 2).text = name_objects[1]
  table.cell(0, 3).text = name_objects[2]

  # 填充数据
  table.cell(1, 0).text = name_AIs[0]
  table.cell(1, 1).text = str(val_AI1[0])
  table.cell(1, 2).text = str(val_AI1[1])
  table.cell(1, 3).text = str(val_AI1[2])

  table.cell(2, 0).text = name_AIs[1]
  table.cell(2, 1).text = str(val_AI2[0])
  table.cell(2, 2).text = str(val_AI2[1])
  table.cell(2, 3).text = str(val_AI2[2])

  table.cell(3, 0).text = name_AIs[2]
  table.cell(3, 1).text = str(val_AI3[0])
  table.cell(3, 2).text = str(val_AI3[1])
  table.cell(3, 3).text = str(val_AI3[2])

  # 定义图表数据 ---------------------
  chart_data = ChartData()
  chart_data.categories = name_objects
  chart_data.add_series(name_AIs[0], val_AI1)
  chart_data.add_series(name_AIs[1], val_AI2)
  chart_data.add_series(name_AIs[2], val_AI3)

  # 添加图表到幻灯片 --------------------
  x, y, cx, cy = Cm(3.5), Cm(4.2), Cm(24), Cm(8)

  graphic_frame = slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
    )

  chart = graphic_frame.chart

  chart.has_legend = True
  chart.legend.position = XL_LEGEND_POSITION.TOP
  chart.legend.include_in_layout = False

  value_axis = chart.value_axis
  value_axis.maximum_scale = 100.0

  value_axis.has_title = True
  value_axis.axis_title.has_text_frame = True
  value_axis.axis_title.text_frame.text = "False positive"
  value_axis.axis_title.text_frame.auto_size

  prs.save('test_template.pptx')

本文用到的源码

下载地址

利用场景

  • 周期性数据汇总及报表生成
  • 业务或项目等数据可视化

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
Python入门学习之字符串与比较运算符
Oct 12 Python
python常见排序算法基础教程
Apr 13 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
用python生成1000个txt文件的方法
Oct 25 Python
Python编写打字训练小程序
Sep 26 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
python中format函数如何使用
Jun 22 Python
python+requests接口自动化框架的实现
Aug 31 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
python实现按长宽比缩放图片
Jun 07 #Python
python实现批量修改图片格式和尺寸
Jun 07 #Python
python实现批量图片格式转换
Jun 16 #Python
python脚本实现验证码识别
Jun 07 #Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 #Python
使用Python处理Excel表格的简单方法
Jun 07 #Python
python实现验证码识别功能
Jun 07 #Python
You might like
如何使用脚本模仿登陆过程
2006/11/22 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
Python计算字符宽度的方法
2016/06/14 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
会计找工作求职信范文
2013/12/09 职场文书
大学生先进事迹材料
2014/02/16 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
品牌转让协议书
2014/08/20 职场文书
公司员工辞职信范文
2015/05/12 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技