用Python玩轉PPT

2020-12-11 AI科技大本營

作者 | 陳熹

來源 | 早起Python

今天本文將基於第三方庫pptx,詳細講解如何使用Python操作Office全家桶最後一位——PPT。

安裝

pptx是一個非標準庫,需要在命令行中安裝

pip install python-pptx

要注意,安裝的時候是python-pptx,而實際調用時均為pptx。這裡和docx模塊相同。

前置知識

1. 基本結構

再看一下ppt結構組成,會較word複雜許多。當然這也跟ppt的高度自定義拓展性有關

簡單來說,一個PPT文件為presentation,基本的結構為展示文件presentation-幻燈片頁slide-形狀shape組成,形狀就需要區分開,是包含文本的形狀還是不包含文本的形狀(純圖片等)。

如果是包含文本的形狀,則可以獲取內部的文本框,一個文本框又可以看作是一個小的word文檔,包含段落paragraph - 文字塊run

現在對Office三件套的結構組成做一個小總結

2. 模板和佔位符

如上圖所示,通過幻燈片母版我們可以預設好各種各樣的版式,後面新建幻燈片的時候只需要點擊版式就可以一鍵生成所需的基本格式。

接著說說佔位符Placeholder

佔位符已經完成了樣式設置,包括字體、字號、顏色等等,在特定佔位符內輸入文字可直接轉化為特定的樣式。

3. 創建 PPT 文件的基本思路

創建一個 PPT從幻燈片母版中確定一個版式在不同的佔位符中填寫不同的內容添加圖片、表格等額外內容對樣式進行修改

Python讀取PPT

1.打開PPT文件

from pptx import Presentation# 這裡給出需要打開的文件路徑file_path = r'...'pptx = Presentation(file_path)

2. 獲取幻燈片頁

用pptx.slides可以獲得一個列表,包括所有的幻燈片頁slide 對象。

for slide in pptx.slides: print(slide)

3. 獲取形狀

只要熟悉了類似 Excel 和 Word 的多級結構, PPT 的結構就很好理解了。每一個幻燈片頁都有一個或者多個形狀shape。

for slide in pptx.slides: for shape in slide.shapes: print(shape)

4. 獲取文本框內容

要獲取文字內容,很容易就聯繫到文字在形狀 shape 的下級結構了 從 Word 中的學習我們也可以推知,文字的承載單位是 段落 paragraph和文字塊 run。

很自然可以想到用下列的代碼獲取文字。

for slide in pptx.slides: for shape in slide.shapes: for paragraph in shape.paragraphs: print(paragraph.text)或者

for slide in pptx.slides:for shape in slide.shapes:for paragraph in shape.paragraphs:for run in paragraph.runs:print(run.text)但這裡出現了一個問題:每個形狀裡一定有文字嗎?

從上圖可以看到,藍色橢圓的形狀裡是沒有任何文字的,中間的大虛線框有文字。

一個形狀中有沒有文字,關鍵就在於它有沒有包含文本框text_frame,下面是與文本框有關的操作:shape.has_text_frame 判斷形狀中是否有文字框shape.text_frame 獲取文字內容

在PPT中,文字框才是文字的載體,因此獲取文字的代碼如下:

for slide in pptx.slides: for shape in slide.shapes: if shape.has_text_frame: text_frame = shape.text_frame print(text_frame.text)到這裡,我們需要對先前對 PPT 結構的認識進行修正:

5. 獲取段落和文字塊

每一個文本框都可以看成是一個小的 Word 文件,裡面有段落和文字塊兩級結構:

for slide in pptx.slides: for shape in slide.shapes: if shape.has_text_frame: text_frame = shape.text_frame for paragraph in text_frame.paragraphs: for run in paragraph.runs: print(run.text)

寫入 PPT

創建全新 PPT 的代碼可以類比創建 Word 文件的代碼,實例化的過程中不給予具體路徑則為創建空白文件。

1. 創建幻燈片頁

其中佔位符編號是區分佔位符的依據,也是寫入內容的依據。

2. 往佔位符填寫內容

指定佔位符編號就可以在具體位置寫入特定內容。

slide.placeholders[佔位符編號].text = '...'

修改 PPT 樣式

1. 段落樣式修改

可以同python-docx模塊對段落樣式的導入進行類比。

具體的方法上二者也有很多相似:

.add_run:添加新的文字塊.line_spacing:段內行間距.runs :段落內的所有文字塊.space_after :段後距.space_before :段前距

2. 文字樣式修改

文字樣式方法和 Word 中的使用是相同的:

.font.name :字體名稱.font.bold :是否加粗.font.italic :是否斜體.font.color :字體顏色.font.size:字體大小但有一個地方需要加以區別:在python-pptx中,使用文字樣式方法是基於段落,也就是paragraph.font.xxxx, 而在python-docx中,使用文字樣式方法是基於文字塊。

以就是對 python-pptx模塊操作PPT的常見方法總結,處理日常辦公絕對沒有問題,更多詳細的代碼可以查閱官方文檔。

學完了這篇Python操作PPT之後,有關Python操作Word、Excel、PPT、PDF的基礎就全部講解完畢,之後我們會繼續更新使用這些工具實現自動化辦公的案例,如果你還不知道具體該如何應用,下面這些案例可能會有所幫助:

Python辦公自動化從PPT到WordPython辦公自動化從Word到ExcelPython辦公自動化從Excel到Word

相關焦點

  • 從PPT到Word,用Python輕鬆實現辦公自動化
    Excel,也講過如何將多個 Excel 表格匯總至 Word,今天繼續講解如何將文字從 PPT 中提取出來並寫入 Word,主要將涉及如何使用 python-pptx 和 python-docx 交互操作 word 和 ppt 文件!
  • python自動化PPT:如何玩轉自選圖形
    python自動化PPT:如何玩轉自選圖形上節對python自動化PPT的圖形基本概念做了詳細介紹,當然,要作出一篇精彩的PPT文檔,精彩的自選圖形必須要掌握,這節繼續來解讀這方面的知識。如何玩轉自選圖形自選圖形基礎自動形狀是規則的形狀。
  • 用Python自動化操作PPT,看完這篇文章就夠了!
    由於我已經安裝過了,這裡提示已經安裝2.2 win32com複製ppt模板有時候我們需要對ppt的模板進行複製,然後再添加相應內容,由於python-pptx對複製模板也沒有很好的支持(我沒找到~憂傷),所以我們用win32com對模板頁進行複製,然後再用python-pptx增加ppt內容。
  • 【Python玩轉Minecraft】35石英鐘,代碼部分
    往期文章及視頻連結:【python玩轉我的世界】01基本情況介紹【python玩轉我的世界】02建造磚塊的基本方法【python玩轉我的世界】03用磚塊疊加建造柱子【python玩轉我的世界】04建造天梯,登高望遠【python玩轉我的世界】05檢閱千奇百怪的磚塊【python玩轉我的世界】06種一支不斷生長的翡翠樹【python玩轉我的世界】07建造一所簡單的房屋【python玩轉我的世界】08修改參數後,房屋門窗對頭了【python
  • 【Python玩轉Minecraft】39期,金字塔代碼部分
    往期文章及視頻連結:【python玩轉我的世界】01基本情況介紹【python玩轉我的世界】02建造磚塊的基本方法【python玩轉我的世界】03用磚塊疊加建造柱子【python玩轉我的世界】04建造天梯,登高望遠【python玩轉我的世界】05檢閱千奇百怪的磚塊【python玩轉我的世界】06種一支不斷生長的翡翠樹【python玩轉我的世界】07建造一所簡單的房屋【python玩轉我的世界】08修改參數後,房屋門窗對頭了【python
  • 玩轉算法 - Python歸併排序
    最壞時間複雜度 O(nlogn)最優時間複雜度 O(nlogn)平均時間複雜度 O(nlogn)手撕代碼代碼託管於github:liuzhen153/play-algorithm-python玩轉算法 - Python冒泡排序
  • Python自動化用這些知識點就夠了!
    自動化辦公無非是excel、ppt、word、郵件、文件處理、數據分析處理、爬蟲這些,這次就來理一理python自動化辦公的那些知識點。下面一一詳解。excel自動化office家族其實都可以用VBA解決自動化的問題,但可能很多人不會用。python針對excel有很多的第三方庫可以用,比如xlwings、xlsxwriter、xlrd、xlwt、pandas、xlsxwriter、win32com、xlutils等等。
  • 通過python-pptx模塊操作ppt文件
    ppt通過其精美的可視化技巧以及良好的演示效果,成為了職場人士的必備技能。ppt的設計是一門大學問,無論是設計技巧,還是操作方法,都衍生出了專門的課程。 本文主要介紹python操作ppt的技巧,編程的優勢在於處理速度,對於高大上的ppt設計,還是需要"以人為本", 所以該模塊的使用場景主要是ppt基本元素的提取和添加,適合大量內容的轉化,比如word轉ppt, 減少大量繁瑣的人工操作,儘管提供了一些基本的樣式設計,但是並不能滿足日常辦公對ppt美觀性的要求。
  • python自動化辦公手冊之python操作PPT
    前言1)python自動化文檔手冊python自動化文章一直深受廣大python愛好者的青睞。基於此,我花了整整一周時間真理出來的python自動化文檔手冊,涉及到五個章節(如下圖所示),① python使用openpyxl操作excel;② python使用PyPDF2和pdfplumber操作pdf;③ python使用python-docx操作word;④ python使用python-pptx操作PPT;⑤ python如何自動收發郵件;⑥ python製作電話號碼歸屬地查詢工具。
  • 在Python裡玩轉JSON數據
    比如最簡單的這種:「{"name" : "zhuxiao5"}」,跟python 裡的字典似的,也是一個Json格式的數據。 json.dumps() 是將 python 對象轉化為 json。json.loads() 是將 json 轉化為 python 對象。
  • 講一講我是如何通過Python實現辦公自動化的
    我們需要學習的主要內容有:python基礎;excel自動化;ppt自動化;word自動化。excel自動化office家族其實都可以用VBA解決自動化的問題,但可能很多人不會用。python針對excel有很多的第三方庫可以用,比如xlwings、xlsxwriter、xlrd、xlwt、pandas、xlsxwriter、win32com、xlutils等等。
  • 20行Python代碼,輕鬆提取PPT文字到Word!
    「菜鳥學Python」,第「516」篇原創大家好,我是菜鳥哥!許多小夥伴不管在學校還是在工作當中,都會遇到一個問題,就是將PPT中的文字提取出來保存到word當中,這樣可以方便自己的閱讀或者是將文字列印出來。但是很多時候,小夥伴們只能將PPT中的文字通過複製粘貼的方式,來一張張的提取出來。
  • 山東開始大力推廣Python;一個爬取微信已發圖文存檔的思路;python操作word文檔的思路;學編程從來都不晚
    信息技術教師的處境亟待改善編程教育創客教育提供新的契機當然最犀利的吐槽是「當我修完電腦做完ppt處理完監控系統故障,修完高考音響系統我就來搞創客。」山東將會大力推廣python了,真是一件非常好的事情了Python處理word200多個word裡面的表格的內容需要轉到excel裡面怎麼辦?
  • python自動化辦公:玩轉word之樣式秘笈
    上節對python如何定製word的頁眉頁腳做了詳細介紹,當然,要作出一篇精彩的word文檔,樣式公布可沒,本章繼續介紹python如何玩轉word的樣式。使用樣式python如何玩轉word的樣式此頁面使用前一頁中開發的概念而不作介紹。如果術語不熟悉,請參閱word的樣式參考。
  • 一種用markdown寫PPT的方法,再也不用費勁排版了
    參考marp 官方文檔可以很快學會用法,但是用的時候去翻比較麻煩,我提煉了常用的語法,最後做了一個 PPT 練手,才算是學會了,現在分享出來以便以後翻閱日常工作生活中常常會用到 ppt, 但是 ppt 有時候做起來非常浪費時間,如果不用關心排版,可以專注內容自動排版豈不妙哉?正好 markdown 就是解決排版的一種語言,有好心人自發開發了一個做 ppt 的利器,只用關注內容,簡單分隔一下,稍微改一下樣式就可以用了。
  • 程式設計師Python編程必備5大工具,你用過幾個?
    它的自動補全非常好用,甚至用了它之後,很多程式設計師小夥伴們就不想再用自帶的Python shell啦!1、AnacondaAnaconda堪稱是數據分析的利器,附帶了一大批常用數據科學包,簡直是數據分析的標配。
  • 為什麼有些算法崗位,需要用C++而不是python?
    說到效率性方面問題就會涉及到程式語言的執行效率,如果不是解決實際的問題,單純比較程式語言執行的效率沒有太大的意義,一件事如果用兩種程式語言都能搞定的情況下,誰用的時間最短而且消耗的精力最小就採用誰,說到python語言在人工智慧裡面算是明星程式語言了,有人稱之為膠水語言,能夠把各種程式語言組合在一起工作
  • 用「python」玩轉自媒體,讓你「寫」到嗨
    因此對於現在的新媒體運營來說,大數據幾乎無處不在,只有重視數據,善於用數據進行分析,這樣利用大數據思維,才能創作出更受歡迎的新媒體產品,那麼對於自媒體行業來說,最重要的莫過於「數據」,尤其是要寫爆文的時候,用戶數據,流量,網上熱點詞彙,是非常重要的,那麼怎麼樣才能在快速的時間抓取到這些內容呢?
  • 英文教材怎麼找——玩轉PDF系列02
    心心念念的 「玩轉PDF系列教程」終於等到了第二期(原諒我最近實在是太忙了,拖了這麼久才發)。這時我們需要用通用搜尋引擎搜索。建議使用 Google 或者及其鏡像網站。當然,搜索也是有技巧的。2.4.1 善於利用 」filetype:「
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    基於liunx系統的python教程,課程裡也有liunx操作的詳細教學,不用擔心學習時不會操作liunx系統。 因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07