日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

如何利用Python自动生成PPT

發(fā)布時(shí)間:2023/12/15 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 如何利用Python自动生成PPT 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天小編給大家分享一下如何利用Python自動生成PPT的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

在日常工作中,PPT制作是常見的工作,如果制作創(chuàng)意類PPT,則無法通過自動化的形式生成,因?yàn)閯?chuàng)意本身具有隨機(jī)性,而自動化解決的是重復(fù)性工作,兩者有所沖突。

python-pptx是python處理PPT的一個(gè)庫,注重的是讀和寫,無法導(dǎo)出,沒有渲染功能。

廢話不多說,第一步,安裝python-pptx庫:

pip3install-ihttps://pypi.doubanio.com/simple/python-pptx

ppt里面處理的主要對象一般為文本框,表格,圖片。

每一頁的ppt為一個(gè)slide

frompptximportPresentation,util
frompptx.utilimportPt,Cm
frompptx.shapes.pictureimportPicture
#實(shí)例化一個(gè)ppt對象
ppt=Presentation("./test.pptx")
slide=ppt.slides[0]#第幾頁

然后遍歷查看這一頁ppt中都包含哪些對象:

defrander_template(slide):
forshapeinslide.shapes:
ifshape.has_text_frame==True:
print("==========================文本框=============================")
print("段落長度:",len(shape.text_frame.paragraphs))
forparagraphinshape.text_frame.paragraphs:
#拼接文字
print("段落包含字段:",len(paragraph.runs))
print(''.join(run.textforruninparagraph.runs))
foriinrange(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="規(guī)則是自由的第一要義"
elifshape.has_table==True:
print("==========================表格==============================")
one_table_data=[]
forrowinshape.table.rows:#讀每行
row_data=[]
forcellinrow.cells:#讀一行中的所有單元格
cell.text=cell.textifcell.text!=""else"未填寫"
c=cell.text
row_data.append(c)
one_table_data.append(row_data)#把每一行存入表
#用二維列表輸出表格行和列的數(shù)據(jù)
print(one_table_data)
print("第一個(gè)單元格內(nèi)容:",shape.table.rows[0].cells[0].text)

elifisinstance(shape,Picture):
print("==========================圖片==============================")
index=0
withopen(f'{index}.jpg','wb')asf:
f.write(shape.image.blob)
index+=1

文本框?qū)ο蟆総ext_frame】:

shape.has_text_frame查看是否有文本框?qū)ο螅械脑挷榭淳唧w有幾個(gè)段落【len(shape.text_frame.paragraphs)】,每個(gè)段落又有多少個(gè)run對象【len(paragraph.runs)】

注意:修改run對象的時(shí)候,修改run[0],后面的值都會被覆蓋。

表格對象【table】:

table對象還是按照行列值來定位劃分的,eg:table.rows[2]cells[3].text代表第三行第四列的值

圖片對象【Picture】:

插入圖片需要固定圖片的位置,比如:

definsert_pic(slide):
#需要用到pptx庫的util方法
img_path='./blue.png'#圖片路徑
#設(shè)置圖片的位置和大小
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)

全部代碼:

frompptximportPresentation,util
frompptx.utilimportPt,Cm
frompptx.shapes.pictureimportPicture
ppt=Presentation("./test.pptx")

defrander_template(slide):
forshapeinslide.shapes:
ifshape.has_text_frame==True:
print("==========================文本框=============================")
print("段落長度:",len(shape.text_frame.paragraphs))
forparagraphinshape.text_frame.paragraphs:
#拼接文字
print("段落包含字段:",len(paragraph.runs))
print(''.join(run.textforruninparagraph.runs))
foriinrange(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="規(guī)則是自由的第一要義"
elifshape.has_table==True:
print("==========================表格==============================")
one_table_data=[]
forrowinshape.table.rows:#讀每行
row_data=[]
forcellinrow.cells:#讀一行中的所有單元格
cell.text=cell.textifcell.text!=""else"未填寫"
c=cell.text
row_data.append(c)
one_table_data.append(row_data)#把每一行存入表
#用二維列表輸出表格行和列的數(shù)據(jù)
print(one_table_data)
print("第一個(gè)單元格內(nèi)容:",shape.table.rows[0].cells[0].text)

elifisinstance(shape,Picture):
print("==========================圖片==============================")
index=0
withopen(f'{index}.jpg','wb')asf:
f.write(shape.image.blob)
index+=1
definsert_pic(slide):
img_path='./blue.png'#圖片路徑
#設(shè)置圖片的位置和大小
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:

總結(jié)

以上是生活随笔為你收集整理的如何利用Python自动生成PPT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。