<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          看我用Python瞬間制作數(shù)百份PPT,贏得小姐姐的下午茶

          共 2587字,需瀏覽 6分鐘

           ·

          2021-01-23 10:46

          大家好,我是早起。

          今天繼續(xù)分享Python辦公自動(dòng)化真實(shí)案例,本文是一個(gè)基于Python+Excel+PPT的應(yīng)用,看我如何用一段代碼安撫焦慮的小姐姐,贏得妹子的下午茶。先看看她的需求??

          需求描述

          你是一名幼兒園老師,本學(xué)期已經(jīng)結(jié)束現(xiàn)在要給 400 個(gè)小朋友制作獎(jiǎng)狀,手上有一份名單 list.xlsx 和 PPT 獎(jiǎng)狀模板 temp.pptx

          內(nèi)容大致如下(為了不影響隱私部分?jǐn)?shù)據(jù)為虛構(gòu))

          過程并不是很難,按照Excel中數(shù)據(jù),一行一行的粘貼到獎(jiǎng)狀模版中就行。

          可如果是手動(dòng)復(fù)制、粘貼的話,那么400多份獎(jiǎng)狀少說也要制作一天,下面我來講解如何利用Python瞬間完成!主要將涉及:

          • openpyxl 讀取 Excel 文件
          • python-pptx 寫入 PPT 文件
          • PPT 占位符相關(guān)知識

          前置知識與邏輯梳理

          完成本案例需要先閱讀我之前寫的原理文章

          之后需要理解兩個(gè)概念:版式占位符

          一、版式

          版式的選擇和設(shè)置操作如下圖?;旧匣脽羝摰奶砑邮腔谝粋€(gè)完整的版式,確定完了版式后再在上面添加內(nèi)容:

          我們打開需求模板 temp.pptx 后會(huì)發(fā)現(xiàn)沒有任何一頁:

          點(diǎn)擊創(chuàng)建后就會(huì)出現(xiàn)一個(gè)新的頁面,這個(gè)是我已解決在版式中預(yù)設(shè)好的:

          仔細(xì)看會(huì)發(fā)現(xiàn),在預(yù)覽狀態(tài)下是看不見模板上這些字的,同樣點(diǎn)擊輸入后也會(huì)發(fā)現(xiàn)字會(huì)不見。原因是這些文本框不是真實(shí)的形狀,而是占位符

          二、占位符

          占位符看下面一張圖就行了

          邏輯梳理

          有了上面兩個(gè)概念的認(rèn)識,我們就可以梳理代碼創(chuàng)建 PPT 文件的邏輯:

          • 創(chuàng)建一個(gè) PPT

          • 從幻燈片母版中確定一個(gè)版式

          • 在不同的占位符中填寫不同的內(nèi)容

          明白了邏輯后又出現(xiàn)了一個(gè)新的問題:我們的模板中有多個(gè)占位符,如何確定占位符并往相應(yīng)的占位符里填寫內(nèi)容?

          答案很簡單,每個(gè)占位符都有自己的編號,在代碼中通過占位符編號就能夠確定指定的占位符了,具體見代碼實(shí)操

          Python實(shí)現(xiàn)過程

          首先我們讀取 list.xlsx 文件:

          from?openpyxl?import?load_workbook
          path?=?r'C:\xxx'?#?根據(jù)自己的情況填寫模板和名單所在的路徑

          workbook?=?load_workbook(path?+?r'\list.xlsx')
          sheet?=?workbook.active

          獲取每個(gè)小朋友的信息的方法很簡單,通過 for row in sheet.rows: 迭代獲取每一行,這是一個(gè)元祖,指定位置就可以獲取具體參數(shù)了:

          for?row?in?sheet.rows:
          ????class_id?=?row[0].value
          ????name?=?row[1].value
          ????title?=?row[2].value
          ????print(class_id,?name,?title)

          接下來是 PPT 部分的操作了,在循環(huán)體外部要打開模板:

          這里是看自己的需求,本文中是將 400 個(gè)小朋友的獎(jiǎng)狀生成在 1 個(gè) PPT 文件中輸出,如果你想要輸出 400 份不同的文件,就是在循環(huán)體內(nèi)部實(shí)例化以及保存了

          from?pptx?import?Presentation
          ...?#?之前打開?Excel?文件的代碼
          pptx?=?Presentation(path?+?r'\temp.pptx')

          然后就是以第一個(gè)版式創(chuàng)建幻燈片頁:

          slide?=?pptx.slides.add_slide(pptx.slide_layouts[0])

          接下來可以通過 shape.placeholder_format.idx 方法獲取占位符編號,為了直觀直接在各自的占位符內(nèi)填寫自己的編號并輸出:

          slide?=?pptx.slides.add_slide(pptx.slide_layouts[0])
          for?shape?in?slide.placeholders:
          ????shape.text?=?str(shape.placeholder_format.idx)

          弄清楚占位符編號后用 slide.placeholders[編號].text = 填寫的內(nèi)容 就可以完成內(nèi)容填寫。

          由于本文是 400 份獎(jiǎng)狀產(chǎn)生在同一個(gè)文件中,因此是在循環(huán)體內(nèi)創(chuàng)建幻燈片頁并填寫,最后在循環(huán)體外保存:

          for?row?in?sheet.rows:
          ????class_id?=?row[0].value
          ????name?=?row[1].value
          ????title?=?row[2].value
          ????print(class_id,?name,?title)
          ????slide?=?pptx.slides.add_slide(pptx.slide_layouts[0])
          ????slide.placeholders[10].text?=?f"{class_id}?班?{name}?小朋友:"
          ????slide.placeholders[11].text?=?"在2020-2021學(xué)年度第一學(xué)期獲得"
          ????slide.placeholders[12].text?=?f"“{title}”稱號。"
          ????slide.placeholders[13].text?=?"特發(fā)此證,以資鼓勵(lì)。"
          ????slide.placeholders[14].text?=?"太陽市幼兒園"
          ????slide.placeholders[15].text?=?"2021年1月"'

          pptx.save(path?+?r'
          \results.pptx')

          最終效果如下:

          很快就成功生成了 400 個(gè)小朋友各自的獎(jiǎng)狀,需求完成,收工!和小姐姐喝下午茶去嘍!

          本文使用的練習(xí)數(shù)據(jù)下載:https://pan.baidu.com/s/1NGtNg-idEt0Wu2JW0gwwgQ 提取碼:c5np

          早起Pythonn 推出的Python辦公自動(dòng)化系列,旨在用Python解決真實(shí)工作中的問題,如果你也有用相關(guān)需求但是無法解決,可以后臺回復(fù)自動(dòng)化添加早小起微信聯(lián)系。

          瀏覽 49
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品国产第六区 | 天堂成人在线 | 亚洲视频中文字幕在线播放 | 我要日逼| 2019无码视频 |