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

利用Python自動(dòng)生成PPT的示例詳解

 更新時(shí)間:2022年07月14日 16:45:50   作者:阿濤的一天  
在日常工作中,PPT制作是常見的工作。這篇文章主要為大家詳細(xì)介紹了如何利用Python自動(dòng)生成PPT,文中的示例代碼講解詳細(xì),感興趣的可以了解一下

在日常工作中,PPT制作是常見的工作,如果制作創(chuàng)意類PPT,則無法通過自動(dòng)化的形式生成,因?yàn)閯?chuàng)意本身具有隨機(jī)性,而自動(dòng)化解決的是重復(fù)性工作,兩者有所沖突。

python-pptx是python處理PPT的一個(gè)庫,注重的是讀和寫,無法導(dǎo)出,沒有渲染功能。

廢話不多說,第一步,安裝python-pptx庫:

pip3 install -i https://pypi.doubanio.com/simple/ python-pptx

ppt里面處理的主要對(duì)象一般為文本框,表格,圖片。

每一頁的ppt為一個(gè)slide

from pptx import Presentation, util
from pptx.util import Pt,Cm
from pptx.shapes.picture import Picture
#實(shí)例化一個(gè)ppt對(duì)象
ppt = Presentation("./test.pptx")
slide = ppt.slides[0] #第幾頁

然后遍歷查看這一頁ppt中都包含哪些對(duì)象:

def rander_template(slide):
    for shape in slide.shapes:
        if shape.has_text_frame == True:
            print("==========================文本框=============================")
            print("段落長度:",len(shape.text_frame.paragraphs))
            for paragraph in shape.text_frame.paragraphs:
                # 拼接文字
                print("段落包含字段:",len(paragraph.runs))
                print(''.join(run.text for run in paragraph.runs))
                for i in range(len(paragraph.runs)):
                    print("run"+str(i)+":"+paragraph.runs[i].text)
            print(shape.text_frame.paragraphs[0].runs[0].text)
            shape.text_frame.paragraphs[0].runs[0].text = "規(guī)則是自由的第一要義"
        elif shape.has_table == True:
            print("==========================表格==============================")
            one_table_data = []
            for row in shape.table.rows:  # 讀每行
                row_data = []
                for cell in row.cells:  # 讀一行中的所有單元格
                    cell.text = cell.text if cell.text != "" else "未填寫"
                    c = cell.text
                    row_data.append(c)
                one_table_data.append(row_data)  # 把每一行存入表
            # 用二維列表輸出表格行和列的數(shù)據(jù)
            print(one_table_data)
            print("第一個(gè)單元格內(nèi)容:",shape.table.rows[0].cells[0].text)

        elif isinstance(shape,Picture):
            print("==========================圖片==============================")
            index = 0
            with open(f'{index}.jpg','wb') as f:
                f.write(shape.image.blob)
                index += 1

文本框?qū)ο蟆総ext_frame】:

shape.has_text_frame查看是否有文本框?qū)ο?,有的話查看具體有幾個(gè)段落【len(shape.text_frame.paragraphs)】,每個(gè)段落又有多少個(gè)run對(duì)象【len(paragraph.runs)】

注意:修改run對(duì)象的時(shí)候,修改run[0],后面的值都會(huì)被覆蓋。

表格對(duì)象【table】:

table對(duì)象還是按照行列值來定位劃分的,eg:table.rows[2]cells[3].text代表第三行第四列的值

圖片對(duì)象【Picture】:

插入圖片需要固定圖片的位置,比如:

def insert_pic(slide):
    #需要用到pptx庫的util方法
    img_path = './blue.png'  # 圖片路徑
    # 設(shè)置圖片的位置和大小
    left = util.Cm(8.04)
    top = util.Cm(9.93)
    width = util.Cm(15.07)
    height = util.Cm(4.06)
    # 在頁面中插入圖片
    slide.shapes.add_picture(img_path, left, top, width, height)

全部代碼:

from pptx import Presentation, util
from pptx.util import Pt,Cm
from pptx.shapes.picture import Picture
ppt = Presentation("./test.pptx")

def rander_template(slide):
    for shape in slide.shapes:
        if shape.has_text_frame == True:
            print("==========================文本框=============================")
            print("段落長度:",len(shape.text_frame.paragraphs))
            for paragraph in shape.text_frame.paragraphs:
                # 拼接文字
                print("段落包含字段:",len(paragraph.runs))
                print(''.join(run.text for run in paragraph.runs))
                for i in range(len(paragraph.runs)):
                    print("run"+str(i)+":"+paragraph.runs[i].text)
            print(shape.text_frame.paragraphs[0].runs[0].text)
            shape.text_frame.paragraphs[0].runs[0].text = "規(guī)則是自由的第一要義"
        elif shape.has_table == True:
            print("==========================表格==============================")
            one_table_data = []
            for row in shape.table.rows:  # 讀每行
                row_data = []
                for cell in row.cells:  # 讀一行中的所有單元格
                    cell.text = cell.text if cell.text != "" else "未填寫"
                    c = cell.text
                    row_data.append(c)
                one_table_data.append(row_data)  # 把每一行存入表
            # 用二維列表輸出表格行和列的數(shù)據(jù)
            print(one_table_data)
            print("第一個(gè)單元格內(nèi)容:",shape.table.rows[0].cells[0].text)

        elif isinstance(shape,Picture):
            print("==========================圖片==============================")
            index = 0
            with open(f'{index}.jpg','wb') as f:
                f.write(shape.image.blob)
                index += 1
def insert_pic(slide):
    img_path = './blue.png'  # 圖片路徑
    # 設(shè)置圖片的位置和大小
    left = util.Cm(8.04)
    top = util.Cm(9.93)
    width = util.Cm(15.07)
    height = util.Cm(4.06)
    # 在頁面中插入圖片
    slide.shapes.add_picture(img_path, left, top, width, height)


if __name__ == "__main__":
    slide = ppt.slides[0] #第幾頁
    rander_template(slide)
    insert_pic(slide)
    ppt.save('new.pptx')  # 保存為文件

初始ppt:

生成ppt:

到此這篇關(guān)于利用Python自動(dòng)生成PPT的示例詳解的文章就介紹到這了,更多相關(guān)Python自動(dòng)生成PPT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot aop方式實(shí)現(xiàn)接口入?yún)⑿r?yàn)的示例代碼

    springboot aop方式實(shí)現(xiàn)接口入?yún)⑿r?yàn)的示例代碼

    在實(shí)際開發(fā)項(xiàng)目中,我們常常需要對(duì)接口入?yún)⑦M(jìn)行校驗(yàn),本文主要介紹了springboot aop方式實(shí)現(xiàn)接口入?yún)⑿r?yàn)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語言模型實(shí)現(xiàn)方法詳解

    基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語言模型實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語言模型實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式詳細(xì)分析了langchain-ChatGLM的功能、原理、部署方法與操作注意事項(xiàng),需要的朋友可以參考下
    2023-07-07
  • python 使用tkinter與messagebox寫界面和彈窗

    python 使用tkinter與messagebox寫界面和彈窗

    這篇文章主要介紹了python 使用tkinter與messagebox寫界面和彈窗,文章內(nèi)容詳細(xì),具有一的的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • celery在python爬蟲中定時(shí)操作實(shí)例講解

    celery在python爬蟲中定時(shí)操作實(shí)例講解

    在本篇文章里小編給大家整理了一篇關(guān)于celery在python爬蟲中定時(shí)操作實(shí)例講解內(nèi)容,需要的朋友們可以參考下。
    2020-11-11
  • 淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤

    淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤

    今天小編就為大家分享一篇淺談python連續(xù)賦值可能引發(fā)的錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python 數(shù)據(jù)類(dataclass)的具體使用

    python 數(shù)據(jù)類(dataclass)的具體使用

    本文主要介紹了python 數(shù)據(jù)類(dataclass)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python中對(duì)信號(hào)的處理詳解

    python中對(duì)信號(hào)的處理詳解

    這篇文章主要給大家介紹了關(guān)于python中對(duì)信號(hào)處理的相關(guān)資料, 計(jì)算機(jī)借助信號(hào)來接收和發(fā)送各種命令,操作系統(tǒng)針對(duì)其編程要接收或生成的每種命令列出了至少一個(gè)信號(hào),需要的朋友可以參考下
    2021-07-07
  • Python開發(fā)之Nginx+uWSGI+virtualenv多項(xiàng)目部署教程

    Python開發(fā)之Nginx+uWSGI+virtualenv多項(xiàng)目部署教程

    這篇文章主要介紹了Python系列之-Nginx+uWSGI+virtualenv多項(xiàng)目部署教程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • python 接口_從協(xié)議到抽象基類詳解

    python 接口_從協(xié)議到抽象基類詳解

    下面小編就為大家?guī)硪黄猵ython 接口_從協(xié)議到抽象基類詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python學(xué)習(xí)之Django的管理界面代碼示例

    Python學(xué)習(xí)之Django的管理界面代碼示例

    這篇文章主要介紹了Python學(xué)習(xí)之Django的管理界面代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

昌吉市| 扬州市| 尼勒克县| 兴业县| 化德县| 阿鲁科尔沁旗| 泰宁县| 大同县| 贡觉县| 莱芜市| 罗田县| 青海省| 深水埗区| 楚雄市| 沙雅县| 深州市| 东至县| 淮安市| 铜陵市| 通渭县| 额济纳旗| 新建县| 宕昌县| 伊春市| 东阳市| 汉川市| 黄平县| 乳源| 汨罗市| 东乌珠穆沁旗| 奇台县| 台江县| 沁阳市| 两当县| 昔阳县| 阿图什市| 新闻| 双流县| 凉城县| 庆云县| 长丰县|