1 说明

=====

1.1 重点介绍python-pptx的基本用法,注意事项,批量方法(★)。

1.2 讲解清楚,注释仔细,本人亲测,注意事项提醒,适合收藏,小白秒懂。

介绍python的ppt(是一个python处理ppt的库)(1)

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 图

介绍python的ppt(是一个python处理ppt的库)(2)

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 图

介绍python的ppt(是一个python处理ppt的库)(3)

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 图

介绍python的ppt(是一个python处理ppt的库)(4)

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 图

介绍python的ppt(是一个python处理ppt的库)(5)

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 图

介绍python的ppt(是一个python处理ppt的库)(6)

图片来自网络,仅供学习,如有侵权请联系,定删除。

,