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在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
python迭代器与生成器详解
Mar 10 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
python logging通过json文件配置的步骤
Apr 27 Python
Pytorch转tflite方式
May 25 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 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
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
两款万能的php分页类
2015/11/12 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python yield使用方法示例
2013/12/04 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Django实现表单验证
2018/09/08 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Python Gitlab Api 使用方法
2019/08/28 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
经理助理岗位职责
2014/03/05 职场文书
电焊工岗位职责
2014/03/06 职场文书
贺卡寄语大全
2014/04/11 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
募捐感谢信
2015/01/22 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
七年级语文教学反思
2016/03/03 职场文书
一级电子管军用接收机测评
2022/04/05 无线电