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 相关文章推荐
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
解决python opencv无法显示图片的问题
Oct 28 Python
python 杀死自身进程的实现方法
Jul 01 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
如何表示python中的相对路径
Jul 08 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
总结Pyinstaller打包的高级用法
Jun 28 Python
python识别围棋定位棋盘位置
Jul 26 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
php计算整个目录大小的方法
2015/06/01 PHP
php轻松实现文件上传功能
2016/03/03 PHP
CI框架常用方法小结
2016/05/17 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python pandas如何向excel添加数据
2020/05/22 Python
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
质量月活动策划方案
2014/03/10 职场文书
授权委托书(完整版)
2014/09/10 职场文书
骨干教师个人总结
2015/02/11 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
反腐倡廉观后感
2015/06/08 职场文书