Python讀取Excel數(shù)據(jù)實現(xiàn)批量生成PPT
背景
大家好,我是J哥。
我們常常面臨著大量的重復(fù)性工作,通過人工方式處理往往耗時耗力易出錯。而Python在辦公自動化方面具有天然優(yōu)勢,分分鐘解決你的辦公需求,提前下班不是夢。
需求
前幾天我發(fā)表了一篇辦公自動化文章Python讀取Excel數(shù)據(jù)并批量生成合同,獲得許多小伙伴的認可和喜歡。其中有一位粉絲提議,能否出一篇PPT自動化的教程,通過讀取Excel數(shù)據(jù)批量生成幻燈片。于是,我以豆瓣電影數(shù)據(jù)為例進行了PPT自動化制作,先看看最終效果:

準(zhǔn)備
PPT數(shù)據(jù)
我們首先需要準(zhǔn)備填充PPT的數(shù)據(jù),我這里用的是豆瓣電影數(shù)據(jù),共有25條電影信息,包含title,director,date,country,types共5個字段,存儲方式為Excel。數(shù)據(jù)預(yù)覽如下:

另外,由于PPT還需要批量插入圖片,因此我這里也準(zhǔn)備了25張電影海報圖片,存放在文件夾movie_pic中。

PPT模板
我們首先需要新建一個PPT模板,這個操作比較簡單,直接進入到PPT母版視圖,然后選擇模板中第一張幻燈片的布局,依次插入電影名稱、圖片、類型、主演和導(dǎo)演、年份和國家6個占位符,其中除了圖片其他都是內(nèi)容占位符。這里一定要注意插入的順序,后面代碼也是根據(jù)占位符順序來進行內(nèi)容填充。為了美化PPT,我們可以個性化添加LOGO,背景圖片,設(shè)置字體顏色大小等等。
實戰(zhàn)
導(dǎo)入相關(guān)模塊
# 讀取圖片文件 import os # 讀取Excel數(shù)據(jù) import pandas as pd # 操作PPT from pptx import Presentation
讀取電影數(shù)據(jù)
用pandas讀取excel數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)為字典格式。
#讀取電影數(shù)據(jù)
df = pd.read_excel(r".\ppt素材\top250.xlsx")
data = df.to_dict('records')
print(data)讀取PPT模板插入數(shù)據(jù)
用Presentation()方法讀取PPT模板,然后遍歷所有電影數(shù)據(jù)(25個字典),選擇母版樣式中的第一張幻燈片即layout[0],接著遍歷幻燈片中的所有占位符,這里用到enumerate()獲取站位符的序號。將每個字典中的值插入到對應(yīng)的占位符中,最后用save()方法保存新生成的PPT。
# 讀取母版文件構(gòu)建PPT的對象
my_ppt = Presentation(r".\ppt素材\ppt模板.pptx")
# 獲取母版所有幻燈片布局
layout = my_ppt.slide_layouts
# 遍歷所有電影數(shù)據(jù)
for x in data:
#print(x)
#選擇模板中第一個幻燈片的布局并創(chuàng)建新幻燈片
slide = my_ppt.slides.add_slide(layout[0])
#當(dāng)前幻燈片中所有的占位符
placeholders = slide.shapes.placeholders
for i,pl in enumerate(placeholders):
if i == 0:
pl.text = x["title"]
elif i == 2:
pl.text = x["types"]
elif i == 3:
pl.text = x["director"]
elif i == 4:
pl.text = str(x["date"])
elif i == 5:
pl.text = x["country"]
my_ppt.save("result.pptx")由于圖片是單獨存放在文件夾movie_pic中,我們需要os.path.join()方法拼接每張圖片的完整路徑,然后用insert_picture()方法將圖片插入到PPT中。
# 電影海報存儲路徑
images = r".\ppt素材\movie_pic"
# 遍歷所有電影數(shù)據(jù)
for x in data:
slide = my_ppt.slides.add_slide(layout[0])
placeholders = slide.shapes.placeholders
for i,pl in enumerate(placeholders):
if i == 0:
pl.text = x["title"]
elif i == 1:
img_path = os.path.join(images,f'{x["title"]}.jpg')
print(img_path)
pl.insert_picture(img_path)以上就是Python讀取Excel數(shù)據(jù)實現(xiàn)批量生成PPT的詳細內(nèi)容,更多關(guān)于Python生成PPT的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python使用reportlab實現(xiàn)圖片轉(zhuǎn)換成pdf的方法
這篇文章主要介紹了python使用reportlab實現(xiàn)圖片轉(zhuǎn)換成pdf的方法,涉及Python使用reportlab模塊操作圖片轉(zhuǎn)換的相關(guān)技巧,需要的朋友可以參考下2015-05-05
Python利用subplots_adjust方法解決圖表與畫布的間距問題
這篇文章主要介紹了如何在使用python?的?matplotlib庫繪圖時,?使用subplots_adjust()方法來調(diào)整圖表與畫布之間的間距,以及圖表與圖表之間的間距,感興趣的可以了解一下2022-04-04
python GUI庫圖形界面開發(fā)之PyQt5中QWebEngineView內(nèi)嵌網(wǎng)頁與Python的數(shù)據(jù)交互傳參詳細方法
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt中QWebEngineView內(nèi)嵌網(wǎng)頁與Python的數(shù)據(jù)交互詳細方法實例,需要的朋友可以參考下2020-02-02
python中for循環(huán)把字符串或者字典添加到列表的方法
今天小編就為大家分享一篇python中for循環(huán)把字符串或者字典添加到列表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

