Python 操作 PPT
前面的小節(jié)我們已經(jīng)學習了如何操作 Word 和 Excel 文件,Office 三劍客已經(jīng)見識過兩個了。今天我們就來學習下 Office 三劍客中最后的 PPT。
在日常辦公中,但凡是正式一點的場合都需要用到 PPT,像是給老板講解你的項目方案,或者是年底的年終述職等等都需要有一個制作精美的 PPT 文件將你的想法和思路或者是數(shù)據(jù)展現(xiàn)給其他人。
但PPT的制作過程無疑是非常繁瑣的,像批量 PPT 的創(chuàng)建和修改、需要在 PPT 中進行大量的圖片、文字的寫入、準確無誤的插入圖表數(shù)據(jù)等,這些如果手動操作無疑是費事費力且無法保障質(zhì)量的,但使用 Python 實現(xiàn) PPT 自動化就完美的解決了這一問題,快來開始本小節(jié)的學習吧!
1. python-pptx模塊介紹
操作 Excel 有 xlrd 和 xlwt,操作 Word 有 python-doc,操作 PPT 自然也有專屬的模塊,那就是 python-pptx,python-pptx 是用于創(chuàng)建和更新 PowerPoint(.pptx)文件的 Python 庫。
通過本小節(jié)的學習,我們最終要完成 PPT 的創(chuàng)建,如下圖所示。
1.1 安裝
python-pptx 是 Python 的第三方庫,使用前需要通過以下命令進行安裝:
pip install python-pptx
1.2 使用步驟
步驟1:導入 python-pptx模塊
import pptx
步驟2:創(chuàng)建(讀?。┮粋€演示文稿對象
prs=pptx.Presentation('test.pptx')
步驟3:添加幻燈片
import pptx
prs=pptx.Presentation('test.pptx')
slide=prs.slides.add_slide(prs.slide_layouts[0])
代碼解釋:通過 add_slide() 方法添加幻燈片,參數(shù)為通過索引獲取要應用的幻燈片布局,這里幻燈片布局與 PPT 中對應關系如下圖所示。
步驟4:向幻燈片中寫入內(nèi)容
根據(jù) pptx 提供的方法,完成演示文稿中每張幻燈片所需內(nèi)容的寫入。
步驟5:生成 PPT 文件
import pptx
prs = pptx.Presentation('test.pptx')
...省略部分代碼
prs.save('test.pptx')
通過 save() 方法進行保存,生成 演示文稿文件,save() 方法可以傳入你想要保存到的文件路徑。到這里就完成了新的演示文稿創(chuàng)建和內(nèi)容寫入的操作。
2. python-pptx 操作演示文稿寫入11
在寫入內(nèi)容之前,先回顧下演示文稿的概念,如下圖所示。
上圖中頂級的 Presentation 對象為我們所操作的一個 PPT 文件通常也稱為一個演示文稿,一個演示文稿中可以包含多張幻燈片(即多個slide),每張幻燈片內(nèi)可以包含文字、圖形、表格、圖表等內(nèi)容。接下來,針對 python-pptx 提供的常用寫入方法進行講解,這里根據(jù)寫入內(nèi)容的類型進行劃分。
2.1 添加文本
在幻燈片上寫入文本,可以添加文本框,在文本框中寫入文本內(nèi)容,如下代碼所示:
import pptx
prs=pptx.Presentation('test.pptx')
slide=prs.slides.add_slide(prs.slide_layouts[0])
text1=slide.shapes.add_textbox(Inches(5),Inches(5),Inches(5),Inches(5))
text1.text="我是文本框"
p1=text1.text_frame.add_paragraph()
p1.text='我是段落1'
p1.add_run().text='end'
prs.save('test.pptx')
代碼解釋:add_slide() 方法創(chuàng)建幻燈片,在幻燈片指定位置通過 add_textbox() 插入文本框,參數(shù)依次為 left, top, width, height 的值。設置文本框內(nèi)容為“我是文本框”,在文本框中添加段落,設置文本內(nèi)容為“我是段落1”,add_run() 方法為段落文本追加方法,內(nèi)容直接拼接在段落后,不會單獨換行。執(zhí)行完成后,test.pptx 演示文稿如下圖所示。
2.2 添加圖形
在幻燈片中添加自選圖形,對應代碼中訪問,如下所示:
...省略部分代碼
#添加自選圖形
shape=slide.shapes.add_shape(MSO_SHAPE.HEXAGON,Inches(2),Inches(2),Inches(5),Inches(3))
#填充、邊框
fill=shape.fill
fill.solid()
fill.fore_color.rgb=RGBColor(255,0,0)
line=shape.line
line.color.rgb=RGBColor(55,3,5)
line.width=Pt(2)
prs.save('test.pptx')
代碼解釋:add_shape() 方法為添加自選圖形,第一個參數(shù)為自選圖形類型,這是一個枚舉值,HEXAGON 為設置六邊形(更多圖形類型點擊這里)后續(xù)參數(shù)依次對應 left,top,width,height。
自選圖形創(chuàng)建完成后,shape.fill 屬性返回一個 FillFormat 對象,該對象包含指定圖形的填充格式屬性。首先通過solid()方法設置線填充,填充顏色使用RGB進行指定,通過 shape.line屬性設置邊線樣式,包括邊框顏色和寬度。執(zhí)行完成后,test.pptx 演示文稿如下圖所示。
2.3 添加表格
在幻燈片中添加表格,對應代碼中訪問,如下所示:
...省略部分代碼
#添加表格
table=slide.shapes.add_table(3,3,Inches(2),Inches(2),Inches(4),Inches(2)).table
#填充內(nèi)容
table.cell(1,0).text='name'
table.cell(1,1).text='age'
table.cell(1,2).text='class'
table.cell(2,0).text='張三'
table.cell(2,1).text='19'
table.cell(2,2).text='一班'
#合并單元格
cell=table.cell(0,0)
cell1=table.cell(0,2)
cell.merge(cell1)
table.cell(0,0).text='班級學生信息' #第一行
cell.split()#取消合并
prs.save('test.pptx')
代碼解釋:add_table() 方法為插入指定行數(shù)、列數(shù)的表格,后續(xù)參數(shù)依次對應 left,top,width,height。表格創(chuàng)建完成后,通過 cell 方法獲取到指定單元格,設置 text 屬性為單元格設置文本內(nèi)容。如需合并單元格通過 merge() 方法進行合并,split() 方法為取消合并。執(zhí)行完成后,test.pptx 演示文稿如下圖所示。
2.4 添加圖表
在幻燈片中添加圖表,對應代碼中訪問,如下所示:
...省略部分代碼
#寫入圖表
#創(chuàng)建一張新的幻燈片
slide1=prs.slides.add_slide(prs.slide_layouts[0])
#定義圖表數(shù)據(jù)
chart_data=CategoryChartData()
chart_data.categories=['一月份','二月份','三月份']#X軸
chart_data.add_series('Y2020',(300,400,500))
chart_data.add_series('Y2019',(400,500,900))
#插入圖表到幻燈片
chart=slide1.shapes.add_chart(XL_CHART_TYPE.LINE,Inches(2),Inches(2),Inches(6),Inches(4),chart_data).chart
#是否顯示標題
chart.has_title=True
#設置標題
chart.chart_title.text_frame.text='第一季度銷售額' #標題
#是否顯示圖例
chart.has_legend=True
#設置圖例位置
chart.legend.position=XL_LEGEND_POSITION.RIGHT
#步驟三:保存PPT文件
prs.save('test.pptx')
代碼解釋:首先使用 add_slide() 方法創(chuàng)建一張新的幻燈片,通過 add_chart() 方法插入圖表,第一個參數(shù)為圖標類型,這里 LINE 為折線圖,參數(shù)依次為 left,top,width,height,圖表所需數(shù)據(jù)。has_title 為是否顯示標題,has_legend 是否顯示圖例。執(zhí)行完成后,test.pptx 演示文稿如下圖所示。
3.小結
本節(jié)課程我們主要學習了 python-pptx 模塊的使用。本節(jié)課程的重點如下:
- 了解 python-pptx 模塊作用及使用步驟;
- 掌握 python-pptx 模塊中添加文本、圖形、表格、圖表的使用方法;
Tips:想要學習更多Pandas相關知識,可以點擊
Python 操作 Excel 數(shù)據(jù)表:數(shù)據(jù)讀取
Python 操作 Excle 數(shù)據(jù)表:數(shù)據(jù)寫入
Python 操作 Word 寫入