通過python-pptx模塊操作ppt文件的方法
ppt通過其精美的可視化技巧以及良好的演示效果,成為了職場人士的必備技能。ppt的設(shè)計(jì)是一門大學(xué)問,無論是設(shè)計(jì)技巧,還是操作方法,都衍生出了專門的課程。
本文主要介紹python操作ppt的技巧,編程的優(yōu)勢在于處理速度,對于高大上的ppt設(shè)計(jì),還是需要"以人為本", 所以該模塊的使用場景主要是ppt基本元素的提取和添加,適合大量內(nèi)容的轉(zhuǎn)化,比如word轉(zhuǎn)ppt, 減少大量繁瑣的人工操作,盡管提供了一些基本的樣式設(shè)計(jì),但是并不能滿足日常辦公對ppt美觀性的要求。
在該模塊中,將ppt拆分為了以下多個(gè)元素
1. presentations, 表示整個(gè)ppt文檔
2. sliders. 表示ppt文檔的每一頁
3. shapes
4. placeholders
上述分類對應(yīng)的常用操作如下
1. presentations
用于打開,創(chuàng)建,保存ppt文檔,用法如下
>>> from pptx import Presentation # 創(chuàng)建新的ppt文檔 >>> prs = Presentation() # 打開一個(gè)ppt文檔 >>> prs = Presentation('input.pptx') # 保存ppt文檔 >>> prs.save('test.pptx')
2. slides
在創(chuàng)建一頁ppt時(shí),需要指定對應(yīng)的布局,在該模塊中, 內(nèi)置了以下9種布局
1. Title
2. Title and Content
3. Section Header
4. Two Content
5. Comparison
6. Title Only
7. Blank
8. Content with Caption
9. Picture with Caption
通過數(shù)字下標(biāo)0到9來訪問,指定布局添加一頁ppt的用法如下
>>> title_slide_layout = prs.slide_layouts[0] >>> slide = prs.slides.add_slide(title_slide_layout)
3. shapes
shapes表示容器,在制作ppt時(shí),各種基本元素,比如文本框,表格,圖片等都占據(jù)了ppt的一個(gè)部分,或者矩形區(qū)域,或者其他各種自定義的形狀。shapes表示所有基本元素的和, 通過如下方式來訪問對應(yīng)的shapes
shapes = slide.shapes
對于shapes而言,我們可以獲取和設(shè)置其各種屬性,比如最常用的text屬性,用法如下
>>> shapes.text = 'hello world'
還可以通過add系列方法來添加各種元素,添加文本框的方法如下
>>> from pptx.util import Inches, Pt >>> left = top = width = height = Inches(1) >>> txBox = slide.shapes.add_textbox(left, top, width, height) >>> tf = txBox.text_frame >>> tf.text = "first paragraph" >>> p = tf.add_paragraph() >>> p.text = "second paragraph"
添加表格的方法如下
>>> rows = cols = 2 >>> left = top = Inches(2.0) >>> width = Inches(6.0) >>> height = Inches(0.8) >>> table = shapes.add_table(rows, cols, left, top, width, height).table >>> table.columns[0].width = Inches(2.0) >>> table.columns[1].width = Inches(4.0) >>> # write column headings >>> table.cell(0, 0).text = 'Foo' >>> table.cell(0, 1).text = 'Bar'
4. placeholders
shapes表示所有基本元素的總和,而placeholders則表示每一個(gè)具體的元素,所以placeholders是shapes的子集, 通過數(shù)字下標(biāo)來訪問對應(yīng)的placeholder,用法如下
>>> slide.placeholders[1] <pptx.shapes.placeholder.SlidePlaceholder object at 0x03F73A90> >>> slide.placeholders[1].placeholder_format.idx 1 >>> slide.placeholders[1].name 'Subtitle 2'
placeholders是頁面上已有的元素,獲取對應(yīng)的placeholders之后,可以通過insert系列方法來向其中新添元素。
了解上述層級結(jié)構(gòu),有助于我們對ppt的讀寫操作。除了寫操作之外,也可以通過讀操作來批量提取ppt中的特定元素,以文字為例,提取方式如下
from pptx import Presentation prs = Presentation(path_to_presentation) text_runs = [] for slide in prs.slides: for shape in slide.shapes: if not shape.has_text_frame: continue for paragraph in shape.text_frame.paragraphs: for run in paragraph.runs: text_runs.append(run.text)
通過該模塊,可以快速搭建ppt的基本框架,也可以批量提取ppt中的特定元素,比如提取文字轉(zhuǎn)換成word, 或者提取表格轉(zhuǎn)換成excel文件??偠灾?,該模塊適合替代大量繁瑣的人工復(fù)制粘貼操作。
到此這篇關(guān)于通過python-pptx模塊操作ppt文件的方法的文章就介紹到這了,更多相關(guān)python-pptx模塊操作ppt文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決python訪問報(bào)錯(cuò):jinja2.exceptions.TemplateNotFound:index.html
這篇文章主要介紹了解決python訪問報(bào)錯(cuò):jinja2.exceptions.TemplateNotFound:index.html,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Python 統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字代碼詳解
這篇文章主要介紹了Python 統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03python實(shí)現(xiàn)圖書館借閱系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖書館借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03linux環(huán)境中沒有網(wǎng)絡(luò)怎么下載python
在本篇文章里小編給大家分享了關(guān)于linux環(huán)境中沒有網(wǎng)絡(luò)怎么下載python的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們參考下。2019-07-07對Python中g(shù)ensim庫word2vec的使用詳解
今天小編就為大家分享一篇對Python中g(shù)ensim庫word2vec的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05matplotlib bar()實(shí)現(xiàn)多組數(shù)據(jù)并列柱狀圖通用簡便創(chuàng)建方法
這篇文章主要介紹了matplotlib bar()實(shí)現(xiàn)多組數(shù)據(jù)并列柱狀圖通用簡便創(chuàng)建方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02python實(shí)現(xiàn)簡單的計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07