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 相关文章推荐
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
Django 404、500页面全局配置知识点详解
Mar 10 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
python爬虫selenium模块详解
Mar 30 Python
Python自然语言处理之切分算法详解
Apr 25 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
python+django加载静态网页模板解析
2017/12/12 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
解除劳动合同协议书
2014/04/14 职场文书
第一书记观后感
2015/06/08 职场文书
培根随笔读书笔记
2015/07/01 职场文书
大学升旗仪式主持词
2015/07/04 职场文书