最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python-pptx創(chuàng)建PPT演示文檔功能實踐

 更新時間:2023年06月21日 17:19:22   作者:肖永威  
這篇文章主要介紹了使用python-pptx創(chuàng)建PPT演示文檔功能實踐,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

python對PPT演示文檔讀寫,是通過第三方庫python-pptx實現(xiàn)的,python-pptx是用于創(chuàng)建和更新 PowerPoint(.pptx)文件的 Python 庫。

關于PPT演示文檔與幻燈片模板的內(nèi)容不是本文的重點,在此略過。

1. PPT基本結構在python-pptx下定義

1.1. 演示文檔結構定義

python-pptx對ppt結構的描述如下圖所示,演示文檔由多個幻燈片(slide)構成,每個幻燈片由眾多各種形狀(shape)組成。

  • Slide:幻燈片,就是演示文稿中每一頁的頁面。
  • Shape:形狀,在每頁幻燈片內(nèi)插入的方框,可以是形狀,也可以是文本框、圖片、表格等等。
  • Run:文字塊,一般為較少字符。
  • Paragraph:段落,通常有序號?、1.等。

圖示演示文檔,如下圖所示,由3頁幻燈片(slide)構成,其中,第三頁幻燈片中的形狀(shape)分別是“標題 1”(Title 1)和“圖片”(Picture Placeholder 2)組成。

1.2. 自定義幻燈片母版

使用程序生成演示文檔,最好先自定義幻燈片母版,如下圖所示,定義4頁模板(slide_layouts)。

注意:shape名稱在office軟件下,是中文,而程序讀出來的可能是英文!

對于母版內(nèi)容:

  • Slides_layouts:版式,一個幻燈片母版由多個版式組成,索引從0開始。slide_layouts[]傳入0表示獲取的是第一個版式,傳入1表示獲取的是第二個版式
  • Placeholder:占位符:存在PPT母版里面的幻燈片的某一部件:Placeholder

2. python-pptx操作PPT實踐

2.1. 安裝python-pptx

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-pptx

2.2. 讀取PPT演示文檔

from pptx import Presentation
# 打開演示文檔
prs = Presentation('加油站全流程診斷大數(shù)據(jù)系統(tǒng).pptx')
for slide in prs.slides:
    print(slide)
# 寫入新文件中 
prs.save('test.pptx')
# 獲取某一頁Slide中的內(nèi)容
for i, slide in enumerate(prs.slides):
    if i == 3:
        for shape in slide.shapes:
            if shape.has_text_frame:
                text_frame = shape.text_frame
                print(text_frame.text) 

2.3. 基于模板創(chuàng)建新的演示文檔

這里所說模板仍然是pptx文件,不是PPT的模板(potx),python-pptx無法讀取potx模板。

也是說,使用僅有一頁,并且無內(nèi)容的空演示文檔,內(nèi)含自定義幻燈片母版,如前面所述的母版樣例。

創(chuàng)建新演示文檔過程如下:

  • 首先,修改首頁內(nèi)容,例如主題和副主題
  • 接著,按實際要求,使用具體模板,也就是slide_layouts

代碼過程如下:

from pptx import Presentation
from PIL import Image
im=Image.open('d:\\02資料\\AI無感加油.png')
# 修改首頁
prs= Presentation('template_1.pptx')
slide = prs.slides[0]
title = ['油站全流程診斷輸出測試頁',
        '測試頁副標題']
for i, shape in enumerate(slide.shapes):
    if shape.has_text_frame:
        text_frame = shape.text_frame
        text_frame.text = title[i]
# 插入內(nèi)容測試
slide = prs.slides.add_slide(prs.slide_layouts[1])  # 用第一個母版生成一頁ppt
for shape in slide.placeholders:         # 獲取這一頁所有的占位符
    phf = shape.placeholder_format
    print(f'{phf.idx}--{shape.name}--{phf.type}')
    print('shape name ', shape.name)
    if shape.name ==  'Title 1':
        shape.text = f'目標'  #在標題占位符中填寫“目標”
    else:
        shape.text = f'內(nèi)容'  #在其他占位符中填寫“內(nèi)容”        
# 插入圖片測試
im.save('tmp.png') #從外部(數(shù)據(jù)庫)讀取的圖片,臨時存儲
slide = prs.slides.add_slide(prs.slide_layouts[2])  # 用第一個母版生成一頁ppt
for shape in slide.placeholders:         # 獲取這一頁所有的占位符
    phf = shape.placeholder_format
    print(f'{phf.idx}--{shape.name}--{phf.type}')
    print('shape name ', shape.name)
    if shape.name ==  'Title 1':
        shape.text = f'插入圖片測試'  #在標題占位符中填寫“目標”
    else:
        shape.insert_picture('tmp.png')  #在其他占位符中填寫“圖片”
prs.save('向占位符內(nèi)填寫內(nèi)容_1.pptx')

附加內(nèi)容:列出對象屬性。

for i, shape in enumerate(slide.shapes):
    print('對象類型', shape.shape_type)
    print('對象屬性列表', dir(shape))

shape部分屬性列表:

  • has_chart
  • has_table
  • has_text_frame
  • height
  • is_placeholder
  • name
  • part
  • placeholder_format
  • shape_id
  • shape_type
  • text
  • text_frame
  • top
  • width

對于數(shù)據(jù)分析結果規(guī)范化輸出,python-pptx功能基本滿足,使用條件是精通PPT,設計出合適的母版,供程序交互使用。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用Python創(chuàng)建websocket服務端并給出不同客戶端的請求

    使用Python創(chuàng)建websocket服務端并給出不同客戶端的請求

    本文主要介紹了使用Python創(chuàng)建websocket服務端并給出不同客戶端的請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Python執(zhí)行錯誤“由于找不到python39.dll,無法繼續(xù)執(zhí)行代碼”解決的步驟

    Python執(zhí)行錯誤“由于找不到python39.dll,無法繼續(xù)執(zhí)行代碼”解決的步驟

    這篇文章主要介紹了在Python開發(fā)中遇到“找不到python39.dll”的錯誤,并提供了詳細的解決方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • Python使用gensim計算文檔相似性

    Python使用gensim計算文檔相似性

    在文本處理中,比如商品評論挖掘,有時需要了解每個評論分別和商品的描述之間的相似度,以此衡量評論的客觀性。那么python 里面有計算文本相似度的程序包嗎,恭喜你,不僅有,而且很好很強大。下面我們就來體驗下gensim的強大
    2016-04-04
  • Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包

    Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包

    今天小編就為大家分享一篇關于Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 利用Python?實現(xiàn)分布式計算

    利用Python?實現(xiàn)分布式計算

    這篇文章主要介紹了利用Python?實現(xiàn)分布式計算,文章通過借助于?Ray展開對分布式計算的實現(xiàn),感興趣的小伙伴可以參考一下
    2022-05-05
  • Python可視化神器pyecharts之繪制箱形圖

    Python可視化神器pyecharts之繪制箱形圖

    這篇文章主要介紹了Python可視化神器pyecharts之繪制箱形圖,箱形圖(Box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數(shù)據(jù)分散情況資料的統(tǒng)計圖,因形狀如箱子而得名
    2022-07-07
  • Python實現(xiàn)數(shù)據(jù)庫連接池的代碼示例和最佳實踐

    Python實現(xiàn)數(shù)據(jù)庫連接池的代碼示例和最佳實踐

    在現(xiàn)代Web應用和數(shù)據(jù)密集型系統(tǒng)中,數(shù)據(jù)庫連接管理是一個關鍵的性能瓶頸,頻繁地創(chuàng)建和銷毀數(shù)據(jù)庫連接不僅消耗資源,還會導致應用程序響應時間變長,為了解決這個問題,數(shù)據(jù)庫連接池技術應運而生,本文將深入探討Python中如何實現(xiàn)數(shù)據(jù)庫連接池,需要的朋友可以參考下
    2025-12-12
  • Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    這篇文章主要介紹了Python基于回溯法子集樹模板實現(xiàn)8皇后問題,簡單說明了8皇后問題的原理并結合實例形式分析了Python回溯法子集樹模板解決8皇后問題的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • Django中Aggregation聚合的基本使用方法

    Django中Aggregation聚合的基本使用方法

    這篇文章主要給大家介紹了關于Django中Aggregation聚合的基本使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Django具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • Python項目跨域問題解決方案

    Python項目跨域問題解決方案

    這篇文章主要介紹了Python項目跨域問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論

师宗县| 雅安市| 太和县| 钟祥市| 阳高县| 平南县| 旅游| 静宁县| 托克托县| 衡东县| 特克斯县| 泽库县| 古浪县| 子洲县| 贵定县| 泗水县| 永修县| 海口市| 保定市| 大竹县| 潼南县| 肇州县| 清流县| 汉川市| 新安县| 尼勒克县| 无为县| 邯郸市| 台州市| 巫山县| 许昌县| 明光市| 诸城市| 绥棱县| 克拉玛依市| 阿拉尔市| 内黄县| 莫力| 平武县| 黎川县| 会昌县|