1 说明
=====
1.1 重点介绍python-pptx的基本用法,注意事项,批量方法(★)。
1.2 讲解清楚,注释仔细,本人亲测,注意事项提醒,适合收藏,小白秒懂。
2 python-pptx基本使用
==================
2.1 官网
https://github.com/scanny/python-pptx
https://python-pptx.readthedocs.io/en/latest/index.html
2.2 安装
pip install python-pptx
#本机安装,国内源
sudo pip3.8 install -i https://pypi.tuna.tsinghua.edu.cn/simple python-pptx
2.3 首页文字
2.3.1 代码
#ppt首页文字设置
# 导包
from pptx import Presentation
# 创建空白演示文稿
prs = Presentation()
# 添加标题布局的幻灯片
# #第0种布局是空白布局
# #ppt布局,0是主标题和副标题,也就是首页
#0~6等
title_slide_layout = prs.slide_layouts[0]
#添加空白幻灯片
slide = prs.slides.add_slide(title_slide_layout)
# 设置标题和副标题
#title = slide.shapes.title
#等同于上面的设置
title = slide.placeholders[0]
#注意只能是1,不能是0,是0就等同于主标题
subtitle = slide.placeholders[1]
#文字内容
title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"
# 保存
prs.save('/home/xgj/Desktop/python-pptx/1.pptx')
2.3.1 图
2.4 柱状图
2.4.1 代码
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
#导出英尺,还可以到处Cm
#from pptx.util import Inches
from pptx.util import Cm
# 创建幻灯片 ------
prs = Presentation()
#推荐图标布局5
slide = prs.slides.add_slide(prs.slide_layouts[5])
# 定义图表数据 ---------------------
chart_data = ChartData()
chart_data.categories = ['Dog', 'Pig', 'Cow']
#数组和数据
chart_data.add_series('Series 1', (29, 20, 33))
chart_data.add_series('Series 2', (14, 31.4, 19.7))
# 将图表添加到幻灯片 --------------------
#x和y是图片的坐标,左顶点坐标为0,0
#cx和cy是图片的右下坐标,推荐参数数值
#x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
#Cm厘米设置大小,推荐参数数值
x, y, cx, cy = Cm(4), Cm(4), Cm(16), Cm(12)
slide.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)
#图表的标题
title = slide.shapes.title
title.text = "2组动物数据柱状图"
prs.save('/home/xgj/Desktop/python-pptx/2-chart.pptx')
2.4.2 图
2.5 图片加载
代码,图省略
from pptx import Presentation
from pptx.util import Cm
prs = Presentation()
#布局6,图片格式
blank_slide_layout = prs.slide_layouts[6]
#加入ppt
slide = prs.slides.add_slide(blank_slide_layout)
#类似与x和y,代表图片的左上角的坐标位置
left = top = Cm(3)
#如果不设置宽和高,就是原图大小显示,一般都是尺寸不合适
height= Cm(12)
width=Cm(10)
pic = slide.shapes.add_picture('/home/xgj/Desktop/python-pptx/girl.jpeg',left,top,height=height,width=width)
#原图
#pic = slide.shapes.add_picture('/home/xgj/Desktop/python-pptx/girl.jpeg',left,top)
prs.save('/home/xgj/Desktop/python-pptx/3-pic.pptx')
2.6 表格
2.6.1 代码
from pptx import Presentation
from pptx.util import Cm
prs = Presentation()
#使用第6个空白版式创建新的幻灯片
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#表格设置4行2列
rows,cols = 4,2
#图表的左上角坐标
left = top =Cm(5)
#图表的宽和高
width = Cm(18)
height = Cm(3)
#表格参数导入
table = slide.shapes.add_table(rows,cols,left,top,width,height).table
# 可以修改列宽、行高
table.columns[0].width = Cm(6)
table.columns[1].width = Cm(4)
table.rows[0].height =Cm(2)
#数据
data = [
['姓名','成绩'], #第一行,表头设置
['李白',99],
['王维', 92],
['杜牧', 95],
]
#遍历
for row in range(rows):
for col in range(cols):
table.cell(row,col).text =str(data[row][col])
prs.save('/home/xgj/Desktop/python-pptx/4-table.pptx')
2.6.2 图
3 python-pptx高级使用
=================
3.1 组合图
3.1.1 代码
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
# 创建幻灯片 ------
prs = Presentation()
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(2.5) #Inches(2.0)
width = Cm(16) # 4个宽度的4
height = Cm(5) # Inches(0.8)
# 添加表格到幻灯片 --------------------
table = shapes.add_table(rows, cols, left, top, width, height).table
# 设置单元格宽度,宽度与总表格宽度的关系
table.columns[0].width = Cm(4)
table.columns[1].width = Cm(4)
table.columns[2].width = Cm(4)
table.columns[3].width = Cm(4)
# 设置标题行
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(2.5), Cm(4.2), Cm(20), Cm(6)
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('/home/xgj/Desktop/python-pptx/5-chart-complex.pptx')
3.1.2 图
3.2 批量生成ppt:python出来ppt的优点,举例★
(谁用单个页面制作ppt,不是python的优势,批量制作才是python的优势)
3.2.1 代码
#批量制作ppt文件,这个比较好
from pptx import Presentation
from pptx.util import Cm
import os
# 演示文稿根对象,使用默认母版
prs = Presentation()
# 幻灯片布局
title_only_slide_layout = prs.slide_layouts[5]
#名字列表,当然也可以来自文件,txt或者xls和csv等读取提取
name_list=['A','B','C','D','E','F']
#读取某路径下的所有图片和显示图片
pic_dir = os.path.join("/home/xgj/Desktop/python-pptx/pic_img")
#这个 文件列表安装图片大小排序的
pic_img_names = os.listdir(pic_dir)
#从新排序,按名字序号阿拉伯数字的升序
pic_img_names.sort()
for i in range(len(name_list)):
# 1. 当前幻灯片对象
slide = prs.slides.add_slide(title_only_slide_layout)
# 2. 当前shapes(背景画布)对象
shapes = slide.shapes
#标题文字
shapes.title.text = '祝' str(name_list[i] '同学,新年快乐!')
#图片位置和大小设置
#类似与x和y,代表图片的左上角的坐标位置
left = top = Cm(3)
#如果不设置宽和高,就是原图大小显示,一般都是尺寸不合适
height= Cm(12)
width=Cm(10)
#加载图片到ppt每一页去
pic = slide.shapes.add_picture(pic_dir "/" pic_img_names[i],left,top,height=height,width=width)
#保存
prs.save('/home/xgj/Desktop/python-pptx/2pil.pptx')
3.2.2 图
图片来自网络,仅供学习,如有侵权请联系,定删除。
,