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中模拟enum枚举类型的5种方法分享
Nov 22 Python
python发送HTTP请求的方法小结
Jul 08 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
Python中的TCP socket写法示例
May 11 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
如何基于python测量代码运行时间
Dec 25 Python
Python实现ATM系统
Feb 17 Python
django form和field具体方法和属性说明
Jul 09 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 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
YB217、YB235、YB400浅听
2021/03/02 无线电
php实现事件监听与触发的方法
2014/11/21 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
PHP设置进度条的方法
2015/07/08 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
iframe实用操作锦集
2014/04/22 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
python标准日志模块logging的使用方法
2013/11/01 Python
python之文件读取一行一行的方法
2018/07/12 Python
pandas取出重复数据的方法
2019/07/04 Python
python中的colorlog库使用详解
2019/07/05 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
django 简单实现登录验证给你
2019/11/06 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
Python调用.NET库的方法步骤
2019/12/27 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
对python中list的五种查找方法说明
2020/07/13 Python
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
什么是类的返射机制
2016/02/06 面试题
网页设计个人找工作求职信
2013/11/28 职场文书
食品药品安全责任书
2015/05/11 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
行政处罚事先告知书
2015/07/01 职场文书