Python讀取Excel批量寫入到PPT并生成詞卡
一、問題的提出
有網(wǎng)友想把Excel表中的三列數(shù)據(jù),分別是:單詞、音標(biāo)和釋義分別寫入到PPT當(dāng)中,每一張PPT寫一個單詞的內(nèi)容。這種批量操作是python的強項,尤其是在辦公領(lǐng)域,它能較好地解放雙手,讀取Excel表后,批量寫入到PPT的模板中。
詞卡
二、分析問題
生成詞卡過程中要用到讀取Excel的openpyxl模塊,以及寫入PPT用到的python-pptx模塊。先讀取單詞表,然后把每一行數(shù)據(jù)存到一個data列表當(dāng)中,然后利用pptx模塊構(gòu)建對象,獲取ppt模板中的第一張幻燈片,以及其母板中的第一個版本。接著遍歷data列表,通過添加slide,寫入三個占位符中單詞、音標(biāo)和釋義等三列數(shù)據(jù),最后再保存為單詞卡pptx文件。
在編寫代碼前要先在cmd下安裝這兩個模塊,代碼是:
pip install openpyxl, python-pptx
三、解決問題
1. 準(zhǔn)備PPT母版
根據(jù)以上分析,我們先把PPT模板準(zhǔn)備好,在其中的母板上,找到第一個版式,自上而下插入三個占位符,此時還可以設(shè)置動畫、顏色、字體等格式信息,然后保存。
母版樣式
2. 準(zhǔn)備單詞表
準(zhǔn)備好一張Excel表,放入我們準(zhǔn)備好的單詞表,命名為單詞表.xlsx,此表可以有表頭,也可以沒有表頭,為讀取和寫入數(shù)據(jù)做準(zhǔn)備
Excel數(shù)據(jù)
3. 寫入代碼
根據(jù)以上分析,我們編寫出以下代碼:
# 導(dǎo)入必要庫 import os from pptx import Presentation from openpyxl import load_workbook # 讀取 Excel 數(shù)據(jù) try: wb = load_workbook(r"單詞表.xlsx") sheet = wb.active # 默認(rèn)讀取第一個工作表 except FileNotFoundError: raise FileNotFoundError("文件 '單詞表1.xlsx' 未找到。") # 檢查是否有數(shù)據(jù) if sheet.max_row < 1: raise ValueError("Excel 文件中沒有有效的數(shù)據(jù)行。") # 將數(shù)據(jù)按行存儲為列表 data = [] for row in sheet.iter_rows(min_row=1, values_only=True): # 從第1行開始讀取數(shù)據(jù) data.append(row) print(data) # 讀取母版文件構(gòu)建 PPT 的對象 try: my_ppt = Presentation(r"單詞模板.pptx") except FileNotFoundError: raise FileNotFoundError("文件 '單詞模板.pptx' 未找到。") # 模板中的第一張幻燈片 sld = my_ppt.slides[0] if sld.shapes[0].has_text_frame: tf = sld.shapes[0].text_frame tf.text = "詞卡內(nèi)容" # 獲取母版所有幻燈片布局 layout = my_ppt.slide_layouts # 遍歷所有數(shù)據(jù) for row in data: # 創(chuàng)建新幻燈片 slide = my_ppt.slides.add_slide(layout[0]) # 當(dāng)前幻燈片中的占位符 placeholders = slide.shapes.placeholders for i, pl in enumerate(placeholders,1): if i < len(row): # 確保占位符對應(yīng)的數(shù)據(jù)存在 pl.text = str(row[i]) if row[i] is not None else "" else: pl.text = "" # 如果數(shù)據(jù)不足,設(shè)置為空字符串 # 保存最終生成的 PPT my_ppt.save("單詞卡.pptx")
四、注意事項
1. 注意路徑為當(dāng)前路徑,生成文件時,一定要保持模板、Excel表都處在關(guān)閉的狀態(tài)當(dāng)中。
2. 注意模板中第一個版式要插入三個占位符,而不是文本框。
到此這篇關(guān)于Python讀取Excel批量寫入到PPT并生成詞卡的文章就介紹到這了,更多相關(guān)Python讀取Excel寫入PPT內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解有關(guān)PyCharm安裝庫失敗的問題的解決方法
這篇文章主要介紹了詳解有關(guān)PyCharm安裝庫失敗的問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02python自動化測試selenium核心技術(shù)處理彈框
這篇文章主要為大家介紹了python自動化測試selenium核心技術(shù)處理彈框的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11python基礎(chǔ)之Numpy庫中array用法總結(jié)
NumPy(Numerical Python的縮寫)是一個開源的Python科學(xué)計算庫,使用NumPy就可以很自然地使用數(shù)組和矩陣,這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)之Numpy庫中array用法的相關(guān)資料,需要的朋友可以參考下2021-08-08簡單了解Python3 bytes和str類型的區(qū)別和聯(lián)系
這篇文章主要介紹了簡單了解Python3 bytes和str類型的區(qū)別和聯(lián)系,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12