python-pptx基本應用
python-pptx基本應用¶
甚麼是python-pptx呢?可以用python來實現自動化做ppt
一開始的時候先安裝基本package
pip install python-pptx
把相關package導入
from pptx import Presentationfrom pptx.util import Pt,Inchesfrom pptx.enum.text import PP_ALIGNimport matplotlib.pyplot as pltfrom pptx.dml.color import RGBColorfrom pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx.oxml.xmlchemy import OxmlElement
創立報表:一開始都需要先宣告你的報表Presentation()
如果只需要空白頁面:
prs = Presentation() #create blank presentation
如果你已經有現成的模板想要套用,可以放入模板位置:
prs = Presentation('some_example.pptx')
然後可以用下面的方式把該報表保存:
prs.save('test.pptx')
我們先前將Presentation 物件保存為prs,接下來我們就可以來創新的頁面
新頁面:當你打開pptx的時候,可以透過“檢視” > “投影片母片” 去找到你的預設,並且滑鼠移動到頁面時按右鍵,重新命名你就可以得知頁面的名稱
當你確定你想要的分頁名稱後,就可以透過下面的function用分頁名稱創新頁面
def get_layout(ppt): """ Key 會是分頁名稱,value會是layout的位址 使用: slide_layout = layout_hash['分頁名稱'] """ layout_hash = {} for layout in ppt.slide_layouts: layout_hash[layout.name] = layout return layout_hash#創新頁面slide = prs.slides.add_slide(ppt_layout['分頁名稱'])
上面的function,Key 會是分頁名稱,value會是layout的位址,因此可以透過指定分頁名稱來特定新頁面
創各種細部物件shapes:最常見的有圖片,表格跟文字框,對應如下add_picture(): 新增圖片用add_table(): 新增表格add_textbox(): 新增文字框
add_textbox() 文字框
如果想要新的文字框,你需要給定四個必要參數,左邊/上面 起始位置,以及寬度跟高度,還有一些細部參數可以調整,如下:
left, top, width, height = Inches(6), Inches(5), Inches(5), Inches(10)new_paragraph1 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame# 更細部參數new_paragraph1.paragraphs[0].text # 文字框中的文字new_paragraph1.paragraphs[0].font.size # 文字大小new_paragraph1.paragraphs[0].font.bold # 是否粗體new_paragraph1.paragraphs[0].font.name # 字型, ex:arial(body)new_paragraph1.word_wrap # 是否自動換行new_paragraph1.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE # Enable auto-fit
許多參數都是重複的,因此可以改成一個function,只要丟特定格式的list就可以用走訪去把文字框做出來
def add_content(ppt, setting:list): """ Sequence should be [slides, text_inside, font_size, font_bold, font_name, left, top, width, height] """ if len(setting)!=9: raise ValueError('The setting list should have 9 elements.') #Add content settings slide = setting[0] left, top, width, height = Inches(setting[5]), Inches(setting[6]), Inches(setting[7]), Inches(setting[8]) new_paragraph1 = slide.shapes.add_textbox(left=left, top=top, width=width, height=height).text_frame new_paragraph1.paragraphs[0].text = setting[1] new_paragraph1.paragraphs[0].font.size = Pt(setting[2]) new_paragraph1.paragraphs[0].font.bold = setting[3] new_paragraph1.paragraphs[0].font.name = setting[4] new_paragraph1.word_wrap = True # Enable word wrap new_paragraph1.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE # Enable auto-fit
add_picture() 新增圖片
首先要先準備好圖片,依序指定參數,圖片位置以及左上點跟圖片的寬高
pic = slide.shapes.add_picture(img_path, left=left, top=top, width=width, height=height)
add_table 新增表格
表格也是ppt中很常見的,可以使用
shapes.add_table(rows, cols, left, top, width, height).table
其中rows and cols 為表格中的列跟欄.如果你要去更動標格每個格子內的文字,就需要逐步用table.cell(row, col) 走訪,例如:
table = page_content.shapes.add_table(rows, cols, Inches(0.88), Inches(1.45), Inches(10.15), Inches(0.32*rows)).table#change size to 16for row in range(rows): for col in range(cols): cell = table.cell(row, col) cell.fill.solid() if row==0: #首列為藍色 cell.fill.fore_color.rgb = RGBColor(37, 71, 247) # Set background color to blue else: cell.fill.fore_color.rgb = RGBColor(245, 245, 245) # Set background color to white if col==0 and row!=0: # all col in 0 exclude header to set spacing to 2 show to middle paragraph = cell.text_frame.paragraphs[0] paragraph.line_spacing = 2 for paragraph in cell.text_frame.paragraphs: paragraph.alignment = PP_ALIGN.CENTER # Center text horizontally for run in paragraph.runs: run.font.size = Pt(14) # Set font size to 16 points
以上就是python-pptx的基本使用.
也可以參考https://python-pptx.readthedocs.io/en/latest/user/quickstart.html
Comments
Loading comments…
Leave a Comment