python快速处理ppt_人生苦短,我用 Python 之快速遍历 PPT
故事背景是這樣的,某一天師兄突然交給一項任務。雖然他吧啦吧啦地說了一堆,但是簡單總結起來就是現在有個一千頁的PPT和一個一千行的txt文檔,要做的事情就是把txt文檔中的一千行文字按順序分別輸入到對應的每一頁PPT中。所以操作起來完全沒有任何技術含量,完全就是苦力勞動。所以在了解清楚需求之后,腦海中大致就兩種想法:
老老實實地手工操作
編寫腳本實現自動化操作
然后無論選擇哪種方法,最根本的目的還是要爭取花費最短的時間來完成任務。考慮到并不清楚 Python 是否具有可以解析 PPT 的第三方模塊,另外即便有也還存在學習的時間成本,因此我首先選擇手動操作,準備先完成前100頁的操作以統計一個時間進行評估。
一通無意識的手工復制粘貼之后,發現手工操作100頁就需要花費30分鐘!!!所以如果要全部手工操作就需要花費300分鐘時間,而且這還是我在之后能始終保持和開始一般的高效率狀態。簡單思考了一下之后,對手工操作實在感到絕望,于是開始探索方案二——腳本自動處理的可能性。先做一個簡單的分析,腳本要做的事情就是將 txt 文檔中的文字逐行獲取,然后在 PPT 文件中逐頁地在特定位置添加文本框,然后添加對應文字。而 Python 遍歷操作 txt 文檔是最基本的文件操作,但是 Python 是否有能遍歷操作 PPT 的模塊支持則不得而知。不過所幸,在一番檢索工作后,驚喜地發現了 python-pptx 模塊。
據 python-pptx 官網介紹:
python-pptx is a Python library for creating and updating PowerPoint (.pptx) files.
... ...
Round-trip any Open XML presentation (.pptx file) including all its elements
Populate text placeholders, for example to create a bullet slide
Add textbox to a slide; manipulate text font size and bold
... ...
這就是說呢,python-pptx 支持創建和更改 pptx 文件,支持往 pptx 中插入文本框添加文字的操作。所以說這個模塊所提供的支持非常符合我的需求,不過我當前并沒有時間把該模塊進行完整的學習,需要的是能快速完成任務。所幸文檔中也給出了一些簡單操作的樣例。因此在瀏覽了幾個樣例之后,我掌握了如何打開與保存 PPT 對象(Presentation),以及如何遍歷 PPT 頁面(slides)和往頁面中插入文本框(textBox)這個 API 的簡單使用之后,成功寫下了如下代碼實現了自己的任務需求:
from pptx import Presentation
from pptx.util import Inches, Pt
prs = Presentation('webvision-stage2.pptx')
pages = 0
left = Inches(4)
top = Inches(1.1)
width = Inches(5)
height = Inches(0.5)
names = []
with open('synsets.txt') as f:
for line in f:
names.append(line[10:-1])
for slide, name in zip(prs.slides, names):
pages += 1
if pages < 114:
continue
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
tf.text = name
prs.save("webvision-stage2-result.pptx")
從調研腳本實現的可行性到完成腳本編寫、調試與實現又花了差不多30分鐘,然后腳本運行1分鐘不到就把任務實現了。當然,作為一個富有責任心的人,在跑完腳本之后,我還花了將近20分鐘的時間將每一頁都瀏覽了一遍,在確保無誤后才將結果反饋給師兄。所以最終總的花費了將近90分鐘時間來完成這項任務,相比于預計的純手工的300+分鐘,Python 的腳本確實大大提高了工作效率。
當然這還只是對 python-pptx 模塊的一個簡單應用,python-pptx 還可以用于利用所給出的數據直接生成 PPT 或者往 PPT 中插入表格、圖片等。
相關參考
總結
以上是生活随笔為你收集整理的python快速处理ppt_人生苦短,我用 Python 之快速遍历 PPT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel 对比数据是否重复
- 下一篇: CiteSpace安装使用简介