python自動化辦公之python操作PPT

1、python-pptx模組簡介

使用python操作PPT,需要使用的模組就是python-pptx,下面來對該模組做一個簡單的介紹。這裡提前做一個說明:python操作PPT,最好是我們提前設計好自己的一套樣式,然後利用進行python進行內容的獲取和填充(最主要的功能!),最好是不用使用python程式碼操作PPT的格式,格式的修改肯定不如我們直接在PPT中修改方便。

2、模組的安裝與匯入

1)模組的安裝

“Windows使用者命令列下輸入”pip install python-pptx“Mac使用者命令列下輸入”pip3 install python-pptx

2)模組的匯入

這裡有一點需要注意的是:安裝的庫是python-pptx,但是匯入的時候卻有點不同。

import pptx

3、python讀取PPT文件中的內容

1)PPT的結構說明

在使用python操作PPT之前,首先應該清楚PPT的結構,這個對於之後程式碼的編寫很有幫助

python自動化辦公之python操作PPT

2)獲取Slide

from pptx import Presentationprs = Presentation(“統計學習方法PPT。pptx”)for slide in prs。slides: print(slide)

結果如下:

python自動化辦公之python操作PPT

3)獲取Shape形狀

““”import pptxfrom pptx import Presentationprs = Presentation(“統計學習方法PPT。pptx”)for slide in prs。slides: for shape in slide。shapes: print(shape)“”“注意:這裡得到的Shape物件,並不能看出什麼,接著往下看。

結果如下:

python自動化辦公之python操作PPT

4)判斷每個Shape中是否存在文字

shape。has_text_frame :是否有文字

shape。text_frame :獲取文字框

import pptxfrom pptx import Presentationprs = Presentation(”統計學習方法PPT。pptx“)for slide in prs。slides: for shape in slide。shapes: if shape。has_text_frame: text_frame = shape。text_frame print(text_frame。text)

結果如下:

python自動化辦公之python操作PPT

5)獲取某一頁Slide中的內容

import pptxfrom pptx import Presentationprs = Presentation(”統計學習方法PPT。pptx“)for i,slide in enumerate(prs。slides): if i == 5: for shape in slide。shapes: if shape。has_text_frame: text_frame = shape。text_frame print(text_frame。text)

結果如下:

python自動化辦公之python操作PPT

6)獲取Shape中的某個Paragraph

import pptxfrom pptx import Presentationprs = Presentation(”統計學習方法PPT。pptx“)for i,slide in enumerate(prs。slides): if i == 5: for shape in slide。shapes: if shape。has_text_frame: text_frame = shape。text_frame for paragraph in text_frame。paragraphs: print(paragraph。text)”“”注意:該方法和上述4)中的方法一摸一樣。上述方法是直接獲取Shpae中的文字內容;下面這個更靈活,先獲取每個Shape,然後在獲取每個Shape中的paragraph;下面方式更好:因為我們可以針對paragraph,寫一個判斷條件,只獲取第幾個paragraph;“”“

結果如下:

python自動化辦公之python操作PPT

4、利用python像PPT中寫入內容

1)幻燈片模板及佔位符的概念

python自動化辦公之python操作PPT

3)什麼是版式?

這個概念在下面的效果中,會得以體現。其中prs。slide_layouts[]傳入0表示獲取的是第一個版式,傳入1表示獲取的是第二個版式,以此類推下去。

python自動化辦公之python操作PPT

4)新增Slide和內容

這裡就需要使用上述的自定義母版。因為畢竟是使用python操作PPT,我們可以定義好自己想要展示的PPT母版,然後藉助程式碼完成PPT的內容寫入操作。

① 佔位符id的確認

import pptxfrom pptx import Presentationprs = Presentation(”空白。pptx“)# prs。slide_layouts[]表示的是ppt中不同的版式slide = prs。slides。add_slide(prs。slide_layouts[0])for shape in slide。placeholders: phf = shape。placeholder_format print(f”{phf。idx}——{shape。name}——{phf。type}“) shape。text = f”{phf。idx}——{shape。name}——{phf。type}“# 注意:做完這個操作,一定要記得儲存一下!prs。save(”電子獎狀模板。pptx“)”“”上述列印結果如下:0——Title 1——TITLE (1) 這個表示標題佔位符,id為013——Picture Placeholder 2——PICTURE (18) 這個表示圖片佔位符,id為1314——Text Placeholder 3——BODY (2) 這個表示正文內容佔位符,id為1415——Text Placeholder 4——BODY (2) 這個表示正文內容佔位符,id為15我們一定要先知道每個空格的佔位符id,才可以進行下面內容的填充。“”“

效果如下:

python自動化辦公之python操作PPT

② PPT內容的填寫

import pptxfrom pptx import Presentationprs = Presentation(”空白。pptx“)slide = prs。slides。add_slide(prs。slide_layouts[0])name = slide。placeholders[14]why = slide。placeholders[15]name。text = ”黃同學“why。text = ”學習太積極“prs。save(”內容填充。pptx“)

效果如下:

python自動化辦公之python操作PPT

5)新增段落

① 佔位符id的確認

import pptxfrom pptx import Presentationprs = Presentation(”finall。pptx“)slide = prs。slides。add_slide(prs。slide_layouts[0])for shape in slide。placeholders: phf = shape。placeholder_format print(f”{phf。idx}——{shape。name}——{phf。type}“) shape。text = f”{phf。idx}——{shape。name}——{phf。type}“print(”——————————————————————-“)slide = prs。slides。add_slide(prs。slide_layouts[1])for shape in slide。placeholders: phf = shape。placeholder_format print(f”{phf。idx}——{shape。name}——{phf。type}“) shape。text = f”{phf。idx}——{shape。name}——{phf。type}“prs。save(”哈哈。pptx“)

效果如下:

python自動化辦公之python操作PPT

② 段落的新增

import pptxfrom pptx import Presentationprs = Presentation(”finall。pptx“)slide = prs。slides。add_slide(prs。slide_layouts[0])name = slide。placeholders[14]why = slide。placeholders[15]name。text = ”黃同學“why。text = ”學習太積極“# ——————————————————————————- #prs1 = Presentation(”finall。pptx“)slide1 = prs。slides。add_slide(prs。slide_layouts[1])shapes = slide1。shapestitle_shape = shapes。title # 這句程式碼可以改為title_shape = shapes。placeholders[0]body_shape = shapes。placeholders[1]title_shape。text = ”這是一個標題“tf = body_shape。text_frame# 這句程式碼就是給body佔位符新增內容!tf。text = ”帶圓點的符號1“p = tf。add_paragraph()# 這個程式碼表示在原來的基礎上,新增第一個段落!p。text = ”帶圓點的符號2“p = tf。add_paragraph()# 這個程式碼表示在原來的基礎上,新增第二個段落!p。text = ”帶圓點的符號3“prs。save(”嘿嘿。pptx“)

效果如下:

python自動化辦公之python操作PPT

③ 給段落設定層級關係

import pptxfrom pptx import Presentationprs = Presentation(”finall。pptx“)slide = prs。slides。add_slide(prs。slide_layouts[0])name = slide。placeholders[14]why = slide。placeholders[15]name。text = ”黃同學“why。text = ”學習太積極“# ——————————————————————————- #prs1 = Presentation(”finall。pptx“)slide1 = prs。slides。add_slide(prs。slide_layouts[1])shapes = slide1。shapestitle_shape = shapes。title # 這句程式碼可以改為title_shape = shapes。placeholders[0]body_shape = shapes。placeholders[1]title_shape。text = ”這是一個標題“tf = body_shape。text_frametf。text = ”帶圓點的符號1“p = tf。add_paragraph()p。text = ”帶圓點的符號2“# 原始內容的層級相當於是0,因此這個段落我設定為層級1,下面的段落設定為層級2p。level = 1p = tf。add_paragraph()p。text = ”帶圓點的符號3“p。level = 2prs。save(”嘻嘻。pptx“)

效果如下:

python自動化辦公之python操作PPT

④ 新增一個文字框

slide。shapes。add_textbox(left, top, width, height)

from pptx import Presentationfrom pptx。util import Cm, Ptprs = Presentation()# 使用第一個版式black_slide_layout = prs。slide_layouts[0]slide = prs。slides。add_slide(black_slide_layout)left = top = width = height = Cm(3)text_box = slide。shapes。add_textbox(left, top, width, height)tf = text_box。text_frametf。text = ”這是一段文字框裡面的文字“p = tf。add_paragraph()p。text = ”這是第二段文字,加粗,字號40“p。font。bold = Truep。font。size = Pt(40)prs。save(”新增一個文字框0。pptx“)

效果如下:

python自動化辦公之python操作PPT

⑤ 新增一個圖片

slide。shapes。add_picture(圖片路徑, 距離左邊, 距離頂端, 寬度, 高度)

第一種展示:

from pptx import Presentationfrom pptx。util import Cmprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = Cm(3)pic = slide。shapes。add_picture(”孫悟空。png“, left, top)prs。save(”新增圖片1。pptx“)

效果如下:

python自動化辦公之python操作PPT

第二種展示:

from pptx import Presentationfrom pptx。util import Cmprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = Cm(3)height = Cm(5。5)pic = slide。shapes。add_picture(”孫悟空。png“, left, top, height=height)prs。save(”新增圖片2。pptx“)

效果如下:

python自動化辦公之python操作PPT

⑥ 新增表格

shapes。add_table(rows, cols, left, top, width, height)

from pptx import Presentationfrom pptx。util import Cm, Ptprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)shapes = slide。shapesrows, cols = 5, 3left = top = Cm(5)width = Cm(18)height = Cm(3)table = shapes。add_table(rows, cols, left, top, width, height)。tabletable。columns[0]。width = Cm(6)table。columns[1]。width = Cm(2)table。columns[2]。width = Cm(2)table。rows[0]。height = Cm(2)data = [ [”姓名“,”性別“,”成績“], [”張三“,”男“,96], [”李四“,”女“,87], [”王五“,”女“,90], [”趙六“,”男“,78]]for row in range(rows): for col in range(cols): table。cell(row,col)。text = str(data[row][col])prs。save(”插入表格。pptx“)

結果如下:

python自動化辦公之python操作PPT

5、PPT文件內容樣式批次調整

1)文字框位置的調整

上面我們已經知道怎麼新增文字框,現在我們需要做的就是,怎麼調整文字框的位置。

from pptx import Presentationfrom pptx。util import Cm, Ptfrom pptx。enum。text import MSO_ANCHOR, MSO_AUTO_SIZEprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = width = height = Cm(3)text_box = slide。shapes。add_textbox(left, top, width, height)tf = text_box。text_frametf。text = ”這是一段文字框裡面的文字“# ————————————————————- #tf。margin_bottom = Cm(0。1) # 下邊距tf。margin_left = 0 # 下邊距# 一定要匯入MSO_ANCHOR這個庫tf。vertical_anchor = MSO_ANCHOR。BOTTOM # 對齊文字方式:底端對齊tf。word_wrap = True # 框中的文字自動換行prs。save(”文字框樣式的調整。pptx“)

結果如下:

python自動化辦公之python操作PPT

2)文字框背景顏色調整

from pptx import Presentationfrom pptx。util import Cm, Ptfrom pptx。enum。text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx。dml。color import RGBColorprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = width = height = Cm(3)text_box = slide。shapes。add_textbox(left, top, width, height)tf = text_box。text_frametf。text = ”這是一段文字框裡面的文字“# ———————————————————— #tf。margin_bottom = Cm(0。1) # 下邊距tf。margin_left = 0 # 下邊距tf。vertical_anchor = MSO_ANCHOR。BOTTOM tf。word_wrap = True # 框中的文字自動換行# ———————————————————— #fill = text_box。fillfill。solid()# 使用之前一定要匯入RGBColor這個庫fill。fore_color。rgb = RGBColor(247, 150, 70)prs。save(”文字框背景色的調整。pptx“)

結果如下:

python自動化辦公之python操作PPT

3)文字框邊框樣式調整

from pptx import Presentationfrom pptx。util import Cm, Ptfrom pptx。enum。text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx。dml。color import RGBColorprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = width = height = Cm(3)text_box = slide。shapes。add_textbox(left, top, width, height)tf = text_box。text_frametf。text = ”這是一段文字框裡面的文字“# ———————————————————— #tf。margin_bottom = Cm(0。1) # 下邊距tf。margin_left = 0 # 下邊距tf。vertical_anchor = MSO_ANCHOR。BOTTOM tf。word_wrap = True # 框中的文字自動換行# ———————————————————— #fill = text_box。fillfill。solid()# 使用之前一定要匯入RGBColor這個庫fill。fore_color。rgb = RGBColor(247, 150, 70)# ———————————————————— #line = text_box。lineline。color。rgb = RGBColor(255, 0, 0)line。width = Cm(0。3)prs。save(”文字框邊框樣式調整。pptx“)

結果如下:

python自動化辦公之python操作PPT

4)段落對其調整

from pptx import Presentationfrom pptx。enum。text import PP_ALIGNprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = width = height = Cm(3)text_box = slide。shapes。add_textbox(left, top, width, height)tf = text_box。text_frame# —————————————— #p = tf。add_paragraph()p。text = ”這是第二段文字“p。alignment = PP_ALIGN。LEFTprs。save(”段落對其調整。pptx“)

當然這裡還有一些其他樣式的調整,和word很類似,就不一一敘述了。

python自動化辦公之python操作PPT

5)字型樣式調整

python自動化辦公之python操作PPT

程式碼如下:

from pptx import Presentationfrom pptx。util import Cm, Ptfrom pptx。enum。text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx。dml。color import RGBColorfrom pptx。enum。text import PP_ALIGNprs = Presentation()# 使用第七個版式black_slide_layout = prs。slide_layouts[6]slide = prs。slides。add_slide(black_slide_layout)left = top = width = height = Cm(3)text_box = slide。shapes。add_textbox(left, top, width, height)tf = text_box。text_frame# —————————————— #p = tf。add_paragraph()p。text = ”這是第二段文字“p。alignment = PP_ALIGN。LEFT# ——————————————————- #p。font。bold = Truep。font。name = ”宋體“p。font。color。rgb = RGBColor(247, 150, 70)p。font。size = Pt(30)prs。save(”字型樣式調整。pptx“)

結果如下:

python自動化辦公之python操作PPT