Python自动制作PPT,python自动生成ppt报告
在日常工作中,PPT制作是一项常见的工作。本文主要详细介绍如何使用Python自动生成PPT。文中的样例代码解释的很详细,有兴趣的可以看看。
在日常工作中,PPT制作是一项常见的工作。如果做了创意PPT,就不能以自动化的形式生成,因为创意本身是随机的,自动化解决的是重复性的工作,两者是相互冲突的。
Python-pptx是Python处理PPT的库,侧重于读写,不能导出,没有渲染功能。
事不宜迟,第一步,安装python-pptx库:
pip 3 install-I https://pypi.doubanio.com/simple/python-pptx
ppt中处理的主要对象一般是文本框、表格、图片。
每页的ppt都是幻灯片。
从pptx导入演示,util
从pptx.util导入Pt,Cm
从pptx.shapes.picture导入图片
#实例化一个ppt对象
ppt=演示(。/test.pptx )
Slide=ppt.slides[0] #第几页
然后遍历查看本页ppt中包含哪些对象:
定义随机模板(幻灯片):
用于slide.shapes:中的形状
if shape . has _ text _ frame==true :
打印(=========================================)
Print(段落长度:,len(shape . text _ frame . paragraphs))
用于shape . text _ frame . paragraphs 3360中的段落
#拼接文本
Print(段落包含字段:,len(paragraph.runs))
打印()。join(run . text for run in paragraph . runs))
对于范围内的I(len(paragraph . runs)):
print( run str(I) : paragraph . runs[I].正文)
print(shape . text _ frame . paragraphs[0])。运行[0]。正文)
Shape.text _ frame.paragraphs [0]。运行[0]。“规则是自由的第一要素”
elif shape.has_table==True:
打印(=========================================)
one_table_data=[]
对于shape . table . rows 3360 #中的行,读取每一行
row_data=[]
对于row.cells: #中的单元格,读取一行中的所有单元格
cell.text=cell.text if cell.text!= else 未填写
c=单元格.文本
row_data.append(c)
one _ table _ data . append(row _ data)#在表中存储每一行
#用二维列表输出表格行和列的数据
打印(one_table_data)
Print(第一个单元格的内容:,shape.table.rows [0]。单元格[0]。正文)
elif isinstance(形状,图片):
打印(==========================================)
指数=0
with open(f“{ index }。 jpg ,
wb) as f:
f.write(shape.image.blob)
index += 1
文本框对象【text_frame】:
shape.has_text_frame查看是否有文本框对象,有的话查看具体有几个段落【len(shape.text_frame.paragraphs)】,每个段落又有多少个run对象【len(paragraph.runs)】
注意:修改run对象的时候,修改run[0],后面的值都会被覆盖。
表格对象【table】:
table对象还是按照行列值来定位划分的,eg:table.rows[2]cells[3].text代表第三行第四列的值
图片对象【Picture】:
插入图片需要固定图片的位置,比如:
def insert_pic(slide):#需要用到pptx库的util方法
img_path = ./blue.png # 图片路径
# 设置图片的位置和大小
left = util.Cm(8.04)
top = util.Cm(9.93)
width = util.Cm(15.07)
height = util.Cm(4.06)
# 在页面中插入图片
slide.shapes.add_picture(img_path, left, top, width, height)
全部代码:
from pptx import Presentation, utilfrom pptx.util import Pt,Cm
from pptx.shapes.picture import Picture
ppt = Presentation("./test.pptx")
def rander_template(slide):
for shape in slide.shapes:
if shape.has_text_frame == True:
print("==========================文本框=============================")
print("段落长度:",len(shape.text_frame.paragraphs))
for paragraph in shape.text_frame.paragraphs:
# 拼接文字
print("段落包含字段:",len(paragraph.runs))
print(.join(run.text for run in paragraph.runs))
for i in range(len(paragraph.runs)):
print("run"+str(i)+":"+paragraph.runs[i].text)
print(shape.text_frame.paragraphs[0].runs[0].text)
shape.text_frame.paragraphs[0].runs[0].text = "规则是自由的第一要义"
elif shape.has_table == True:
print("==========================表格==============================")
one_table_data = []
for row in shape.table.rows: # 读每行
row_data = []
for cell in row.cells: # 读一行中的所有单元格
cell.text = cell.text if cell.text != "" else "未填写"
c = cell.text
row_data.append(c)
one_table_data.append(row_data) # 把每一行存入表
# 用二维列表输出表格行和列的数据
print(one_table_data)
print("第一个单元格内容:",shape.table.rows[0].cells[0].text)
elif isinstance(shape,Picture):
print("==========================图片==============================")
index = 0
with open(f{index}.jpg,wb) as f:
f.write(shape.image.blob)
index += 1
def insert_pic(slide):
img_path = ./blue.png # 图片路径
# 设置图片的位置和大小
left = util.Cm(8.04)
top = util.Cm(9.93)
width = util.Cm(15.07)
height = util.Cm(4.06)
# 在页面中插入图片
slide.shapes.add_picture(img_path, left, top, width, height)
if __name__ == "__main__":
slide = ppt.slides[0] #第几页
rander_template(slide)
insert_pic(slide)
ppt.save(new.pptx) # 保存为文件
初始ppt:
生成ppt:
到此这篇关于利用Python自动生成PPT的示例详解的文章就介绍到这了,更多相关Python自动生成PPT内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。