只需6行代碼,Python將PPT轉為Word!


大家好,又到了Python辦公自動化系列。本文將講解如何將文字從PPT中提取出來並寫入Word,主要將涉及如何使用python-pptxpython-docx交互操作word和ppt文件!

本文依舊來源於真實的辦公自動化需求

一、需求說明

img

img

有一份如圖所示的ppt,包含了Python的介紹。現在需要將PPT中的文字都提取出來並寫入Word中,如下圖

img

img

二、涉及知識

代碼實際上非常簡單,基於python-pptxpython-docx兩個模塊即可,核心代碼只有6行。但需要先熟悉PPT和Word兩種文件的格式,可通過下面的圖解對Word結構有個直觀認識

img

img

不考慮表格圖片等情況,一個純文字組成的Word文檔由文檔document-段落paragraph-文字塊run****三級結構組成。再看一下ppt結構組成,會較Word復雜許多。當然這也跟PPT的高度自定義拓展性有關

img

img

簡單來說,一個PPT文件為presentation,基本的結構為展示文件presentation-幻燈片頁slide-形狀shape組成,形狀就需要區分開,是包含文本的形狀還是不包含文本的形狀(純圖片等)。如果是包含文本的形狀,則可以獲取內部的文本框,一個文本框又可以看作是一個小的word文檔,包含段落paragraph-文字塊run

有了以上的知識鋪墊就可以寫代碼了。

三、Python實現

首先導入需要的模塊

from pptx import Presentation
from docx import Document****

需要注意的是,安裝的時候是python-docxpython-pptx,但實際運用都是pptxdocx。兩個模塊的相似點如下:

  • 安裝名和導入名不同

  • 安裝名為 python-新版本后綴名,導入名為新版本后綴名

現在導入pptx文件,創建Word文件

wordfile = Document()
# 給定ppt文件所在的路徑
filepath = r'xxxxxxxx'
pptx = Presentation(filepath)

接着遍歷ppt,將文字寫入word

# 遍歷ppt文件的所有幻燈片頁
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:
                # 將文本框中的段落文字寫入word中
                wordfile.add_paragraph(paragraph.text)

遍歷ppt到段落就寫入Word,而非遍歷到底直到文字塊才寫入,因為段落更符合閱讀習慣,一般遍歷到文字塊是需要對特定的字段詞塊進行操作才進行,最后記得保存Word文件

save_path = r'xxxxxxxx'
wordfile.save(save_path)

小結

這是經過一定改編的真實案例,可見Python自動化辦公確實能夠幫助我們解放自己的雙手,不過在寫自動化腳本之前也要掌握原理,明確思路再進行!最后還是希望大家能夠理解Python辦公自動化的一個核心就是批量操作-解放雙手,讓復雜的工作自動化!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM