亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

怎么用Python實(shí)現(xiàn)自動(dòng)生成ppt?下文給你答案

89542767 / 1002人閱讀

  在日常向領(lǐng)導(dǎo)匯報(bào)工作的時(shí)候,PPT使用次數(shù)是比較多的,那么,怎么才能提高工作效率,更快的去完成PPT呢?下面,小編就給大家總結(jié)了一些代碼實(shí)例,希望大家以后在工作中能夠遇到。

  在日常工作中,PPT制作是常見(jiàn)的工作,那么慢,怎么快速的進(jìn)行制作,確是十分考驗(yàn)人的能力的。

  如果我們想要把PPT做的更好看一些,比如去制作創(chuàng)意類PPT,則無(wú)法通過(guò)自動(dòng)化的形式生成,因?yàn)閯?chuàng)意本身具有隨機(jī)性,而自動(dòng)化解決的是重復(fù)性工作,所以兩者就會(huì)產(chǎn)生一定的沖突。

  python-pptx是python處理PPT的一個(gè)庫(kù),注重的是讀和寫,無(wú)法導(dǎo)出,沒(méi)有渲染功能,那么,到底該如何使用呢,下面給讀者一步一步的進(jìn)行拆解。

  第一步,安裝python-pptx庫(kù):

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

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

      每一頁(yè)的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]#第幾頁(yè)

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

     def rander_template(slide):

  for shape in slide.shapes:

  if shape.has_text_frame==True:

  print("==========================文本框=============================")

  print("段落長(zhǎng)度:",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ì)象還是按照行列值來(lái)定位劃分的,eg:table.rows[2]cells[3].text代表第三行第四列的值

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

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

0

全部代碼:

    def insert_pic(slide):
    #需要用到pptx庫(kù)的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)
    # 在頁(yè)面中插入圖片
    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("段落長(zhǎng)度:",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)
    # 在頁(yè)面中插入圖片
    slide.shapes.add_picture(img_path, left, top, width, height)
 
 
if __name__ == "__main__":
    slide = ppt.slides[0] #第幾頁(yè)
    rander_template(slide)
    insert_pic(slide)
    ppt.save('new.pptx')  # 保存為文件

初始ppt:

1

生成ppt:

2

關(guān)于Python自動(dòng)生產(chǎn)PPT的文章就為大家介紹到這里了,希望能給大家?guī)?lái)幫助。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/127545.html

相關(guān)文章

  • java面試

    摘要:面向切面編程的目標(biāo)就是分離關(guān)注點(diǎn)。不會(huì)出現(xiàn)數(shù)據(jù)不一致或者數(shù)據(jù)污染。線程不安全就是不提供數(shù)據(jù)訪問(wèn)保護(hù),有可能出現(xiàn)多個(gè)線程先后更改數(shù)據(jù)造成所得到的數(shù)據(jù)是臟數(shù)據(jù)和區(qū)別是的輕量級(jí)實(shí)現(xiàn)非線程安全的實(shí)現(xiàn) spingmvc 和 structs的區(qū)別 我們用struts2時(shí)采用的傳統(tǒng)的配置文件的方式,并沒(méi)有使用傳說(shuō)中的0配置。 spring3 mvc可以認(rèn)為已經(jīng)100%零配置了(除了配置spring ...

    BlackMass 評(píng)論0 收藏0
  • 怎么做好云遷移”? 深藍(lán)云海資深架構(gòu)師給你答案

    摘要:基于云遷移的三個(gè)階段細(xì)分為八個(gè)主要步驟,評(píng)估階段主要包括項(xiàng)目啟動(dòng)現(xiàn)狀梳理以及應(yīng)用系統(tǒng)關(guān)聯(lián)關(guān)系分析三個(gè)步驟,設(shè)計(jì)階段包括云架構(gòu)優(yōu)化設(shè)計(jì)和云遷移方案設(shè)計(jì),實(shí)施階段包括目標(biāo)架構(gòu)遷移演練及實(shí)施和試運(yùn)行三個(gè)步驟。 在云計(jì)算市場(chǎng)規(guī)模不斷擴(kuò)大的大背景下,云遷移的需求越來(lái)越大且面臨挑戰(zhàn)。云遷移不是一個(gè)遷移軟件工具,而是一種服務(wù)。前IBM資深架構(gòu)師姜亞杰從云遷移的三個(gè)階段、四個(gè)維度到八個(gè)步驟的方法,簡(jiǎn)述...

    kk_miles 評(píng)論0 收藏0
  • 如何快速成長(zhǎng)為技術(shù)大牛?阿里資深技術(shù)專家的總結(jié)亮了

    摘要:上班太忙沒(méi)時(shí)間自己學(xué)習(xí)很多人認(rèn)為自己沒(méi)有成為技術(shù)大牛并不是自己不聰明,也不是自己不努力,而是中國(guó)的這個(gè)環(huán)境下,技術(shù)人員加班都太多了,導(dǎo)致自己沒(méi)有額外的時(shí)間進(jìn)行學(xué)習(xí)。 寫在前面 不管是開(kāi)發(fā)、測(cè)試、運(yùn)維,每個(gè)技術(shù)人員心里多多少少都有一個(gè)成為技術(shù)大牛的夢(mèng),畢竟夢(mèng)想總是要有的,萬(wàn)一實(shí)現(xiàn)了呢!正是對(duì)技術(shù)夢(mèng)的追求,促使我們不斷地努力和提升自己。然而夢(mèng)想是美好的,現(xiàn)實(shí)卻是殘酷的,很多同學(xué)在實(shí)際工作后...

    warkiz 評(píng)論0 收藏0
  • 對(duì)python并發(fā)編程的思考

    摘要:我們以請(qǐng)求網(wǎng)絡(luò)服務(wù)為例,來(lái)實(shí)際測(cè)試一下加入多線程之后的效果。所以,執(zhí)行密集型操作時(shí),多線程是有用的,對(duì)于密集型操作,則每次只能使用一個(gè)線程。說(shuō)到這里,對(duì)于密集型,可以使用多線程或者多進(jìn)程來(lái)提高效率。 為了提高系統(tǒng)密集型運(yùn)算的效率,我們常常會(huì)使用到多個(gè)進(jìn)程或者是多個(gè)線程,python中的Threading包實(shí)現(xiàn)了線程,multiprocessing 包則實(shí)現(xiàn)了多進(jìn)程。而在3.2版本的py...

    sshe 評(píng)論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<