python-pptx基本應用

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