【辦公自動化】使用Python批量生成PPT版榮譽證書

🤵?♂? 個人主頁:@艾派森的個人主頁

?🏻作者簡介:Python學習者
🐋 希望大家多多支持,我們一起進步!😄
如果文章對你有幫助的話,
歡迎評論 💬點贊👍🏻 收藏 📂加關注+


目錄

一、Python處理PPT

二、批量生成PPT版榮譽證書

?三、往期推薦


一、Python處理PPT

????????使用Python處理PPT文件通常需要使用第三方庫來簡化對PPT文件的讀取、寫入和修改操作。下面介紹一些常用的Python庫和它們的功能:

  1. python-pptx:這是一個流行的Python庫,用于創建、讀取和修改PPTX(Office Open XML格式)文件。您可以使用它創建新的幻燈片、添加文本、圖像和形狀,還可以修改幻燈片的樣式和布局。

  2. python-pptx-template:這個庫在python-pptx的基礎上增加了對模板的支持。您可以使用預定義的PPTX文件作為模板,然后在模板的基礎上進行修改和生成新的演示文稿。

  3. python-com-pptx:這是一個用于操作PPT文件的Windows COM庫。它可以與Microsoft PowerPoint應用程序進行交互,允許您通過Python腳本控制和修改PPT文件。

  4. pptx2pdf:這個庫用于將PPT文件轉換為PDF格式。它依賴于LibreOffice來進行轉換,因此需要確保系統中已安裝LibreOffice。

這里是一個使用python-pptx庫創建簡單幻燈片的示例:

from pptx import Presentation# 創建一個新的PPT文件
presentation = Presentation()# 添加一張幻燈片
slide = presentation.slides.add_slide(presentation.slide_layouts[5])# 在幻燈片中添加標題和內容
title = slide.shapes.title
content = slide.placeholders[1]
title.text = "歡迎使用Python處理PPT"
content.text = "這是一個使用python-pptx庫創建的演示文稿示例。"# 保存PPT文件
presentation.save("example.pptx")

?請注意,您需要在運行腳本之前先安裝相應的庫。您可以使用pip來安裝這些庫:

pip install python-pptx
pip install python-pptx-template
pip install comtypes  # 用于python-com-pptx

使用Python處理PPT文件有許多好處:

  1. 自動化:Python可以幫助您自動完成與PowerPoint有關的重復性任務,比如創建演示文稿、更新內容、添加幻燈片或格式化元素。這可以節省大量時間和精力。

  2. 靈活性:Python提供了許多可以操作PPT文件的庫和模塊,讓您可以進行各種操作,包括讀取、寫入、修改和提取數據。

  3. 庫支持:有特定的Python庫,如python-pptx,可以簡化處理PowerPoint文件的復雜性,提供簡單的API供開發人員使用。

  4. 定制化:使用Python,您可以根據動態數據或用戶輸入來定制PowerPoint演示文稿。例如,您可以將來自不同來源的數據合并到預先設計好的模板中,創建個性化的報告或演示文稿。

  5. 集成性:Python可以輕松與在數據分析、數據處理和報告流程中常用的其他工具和系統集成。這樣,您可以將PPT生成與數據處理和分析結合起來,創建全面且有見地的演示文稿。

  6. 文本處理和數據提取:Python強大的文本處理能力使您可以從現有的PowerPoint演示文稿中提取信息。您可以搜索特定文本,從幻燈片中提取數據,甚至生成結構化數據以進行進一步的分析。

  7. 協作:使用Python處理PPT文件,您可以促進團隊成員之間的協作,使他們可以以編程方式生成和更新演示文稿,減少手動錯誤并確保一致性。

  8. 跨平臺:Python是一種跨平臺語言,這意味著您的PPT處理腳本可以在不同的操作系統上運行,提供了靈活性和便捷性。

  9. 節省成本:Python是一種開源語言,用于PPT處理的庫也是免費提供的。這使得Python成為處理PowerPoint文件的一種經濟高效的解決方案。

????????總的來說,Python的簡單性、豐富的庫支持和自動化任務的能力使其成為處理PowerPoint文件的優秀選擇,無論您是想自動化演示文稿、從幻燈片中分析數據還是生成動態報告。

二、批量生成PPT版榮譽證書

技術工具:

Python版本:3.9

代碼編輯器:jupyter notebook

????????每到學期末,幼兒園的小朋友除了讓家長帶上床上用品等回家,還有一張“好孩子”的“榮譽證書”。這個不像大朋友或者成人的榮譽證書,必須是通過激烈競爭而只有少數人才能獲得的。這個可是人手一份的,大家都是“好孩子”。如果有小朋友沒有拿到這個榮譽證書,家長和小孩子可不愿意了,非得找老師理論不可,哈哈。朋友所在的幼兒園每學期都要搞這個事情,整個幼兒園近400份榮譽證書,一個一個填寫,專人要填幾天。這不,這次園長讓朋友來填,真愁死人了!于是朋友跑來親切地詢問我是否可以代勞。好吧,朋友相求,必須拍胸脯保證行啊。

????????此處,需要用到第三方庫`pptx`。這個是專門用來創建和修改PPT幻燈片的庫(PPT文件必須是.pptx為后綴的)。我們先安裝這個庫,步驟如下:

?1. Windows徽標鍵+字母鍵R,輸入"cmd”運行命令輸入窗口

2. 輸入"pip install python-pptx",耐心等待下載及安裝

?

????????有時候網絡太差,下載到中途會崩潰,也可以直接去這個庫所在的網站(https://pypi.org/project/python-pptx/#files )用迅雷下載到本地盤,再安裝。比如我將這個下載好的壓縮文件解壓到E盤,然后打開運行cmd,輸入"E:"進入E盤,再輸入"cd python-pptx-0.6.18"進入其所在文件夾,最后輸入"python setup.py install"進行安裝。?

?如下是安裝完成的提示,然后就可以使用了。

首先,需要在幻燈片母版的第一個版式中設置好模板,以便后面用程序調用:

此處,模板中插入了一張榮譽證書的背景圖片,然后將文字部分分成了6個文本框(可根據實際情況靈活調整),在其中填入內容,設置好字體和字號。?

?????????在power point軟件中設置好模板之后,需要用程序讀取一下模板中的文本框所對應的編號,即占位符(placeholder)的ID。由于PPT中一頁幻燈片的占位符編號隨著PPT的不斷更改,不一定是按1,2,3這樣的順序排列的,只有讀取一下才知道。

from pptx import Presentation
prs = Presentation('data\榮譽證書模板.pptx')
slide = prs.slides.add_slide(prs.slide_layouts[0]) # 第一個模板的第0個板式
for ph in slide.placeholders: #遍歷這頁PPT的所有占位符phf = ph.placeholder_format #獲取占位符的格式print(phf.idx) #打印其ID編號ph.text = str(phf.idx)# 將編號寫入PPT對應的位置中,以便后面一一對應
# 以上讀取到占位符的ID方便后面調用
prs.save('data\榮譽證書模板-占位符編號.pptx')

?

????????以上,我們先導入安裝好的`pptx`庫中的`Presentation`(演示文稿/幻燈片)模塊,然后打開對應路徑下的PPT模板,并存入`prs`變量。然后通過`prs.slides.add_slide`以母版中的第一個模板新增1張幻燈片。模板的版式編號是從0開始的,所以第一個版式對應的是`[0]`。然后遍歷這頁PPT的所有占位符,獲取其占位符的格式,存入`phf`變量。然后通過`phf.idx`打印其ID編號。如上,我們可以看到結果。隨后通過`ph.text`將編號寫入PPT對應的位置中,以便后面一一對應。由下圖可見,其編號從上到下是10~15。?

????????模板做好,占位符ID確定后,就需要讀取幼兒園所有小朋友的班級和名字信息,然后寫入了。小朋友的信息存在現有的Excel表格中,使用`openpyxl`庫讀取出來即可。下面就來讀取吧。?

from openpyxl import load_workbook
wb = load_workbook("data\名單.xlsx")
ws = wb.active
data={}
for row in range(2,ws.max_row+1):class_id = ws['A' + str(row)].valuename = ws['B' + str(row)].value data.setdefault(class_id,[])data[class_id].append(name)
data['小一'][:10]

????????以上,將名單中的班級和姓名信息按“班級”為鍵,“姓名”組成的列表為值存入字典`data`。通過`data['小一'][:10]`查看一下小一班前10個同學的數據。下面開始批量寫入PPT。?

import time
t0=time.time()# 程序開始運行的時間prs = Presentation('data\榮譽證書模板.pptx')
slide_layout = prs.slide_layouts[0] #調用設置好的母版,因為是母版的第一版式,所以取[0]
for class_id in data:for name in data[class_id]:slide = prs.slides.add_slide(slide_layout) #以母版的版式為基礎新增一頁幻燈片#往幻燈片中寫入內容slide.placeholders[10].text = "{} 班 {} 同學:".format(class_id,name) #此處是班級和姓名slide.placeholders[11].text = "在2019-2020學年度第一學期獲得"slide.placeholders[12].text = "“好孩子”稱號。"slide.placeholders[13].text = "特發此證,以資鼓勵。"slide.placeholders[14].text = "市幼兒園"slide.placeholders[15].text = "2020年1月"
prs.save('data\榮譽證書(總).pptx')
t1 = time.time()print('程序用時:',str(round(t1-t0))+'秒。')

????????400名小朋友的獎狀只用了8秒鐘寫完。以上,通過`for`循環先獲取班級,然后第二個`for`循環獲取該班級下面對應的姓名,對于每個姓名,通過`prs.slides.add_slide`新建一頁幻燈片,然后按我們先前獲取的占位符ID,寫入內容。除了班級和姓名,其它都是固定的內容。寫入完成后,保存打印即可。而且PPT里是按班級排序的,這樣每個班級的榮譽證書在打印后會集中在一起,方便區分。?

?三、往期推薦

Python提取pdf中的表格數據(附實戰案例)

使用Python自動發送郵件

Python操作ppt和pdf基礎

Python操作word基礎

Python操作excel基礎

使用Python一鍵提取PDF中的表格到Excel

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42906.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42906.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42906.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RocketMQ消費者可以手動消費但無法主動消費問題,或生成者發送超時

1.大多數是配置問題 修改rocketmq文件夾broker.conf 2.配置與集群IP或本地IPV4一樣 重啟 在RocketMQ獨享實例中支持IPv4和IPv6雙棧,主要是通過在網絡層面上同時支持IPv4和IPv6協議棧來實現的。RocketMQ的Broker端、Namesrv端和客戶端都需要支持IPv4和IPv6協議&…

Python土力學與基礎工程計算.PDF-螺旋板載荷試驗

python 求解代碼如下: 1. import numpy as np 2. 3. # 已知參數 4. p_a 100 # 標準壓力, kPa 5. p np.array([25, 50, 100, 200) # 荷載, kPa 6. s np.array([2.88, 5.28, 9.50, 15.00) / 10 # 沉降量, cm 7. D 10 # 螺旋板直…

C語言:選擇+編程(每日一練)

目錄 選擇題: 題一: 題二: 題三: 題四: 題五: 編程題: 題一:尼科徹斯定理 示例1 題二:等差數列 示例2 本人實力有限可能對一些地方解釋和理解的不夠清晰&…

Redis知識(一)

目錄 Redis過期刪除和內存淘汰策略: 過期刪除策略: 內存淘汰策略(解決內存過大問題): LRU和LFU以及他們在Redis里的實現 主從復制 哨兵模式 緩存 緩存雪崩 緩存擊穿 緩存穿透 數據庫和緩存一致性問題 Redis…

windows下redis服務啟動及.bat文件中中redis服務的啟動

windows windows下redis服務的啟動 1、不配置環境變量 找到redis服務的安裝目錄進入命令行窗口并輸入命令redis-server.exe redis.windows.conf2、配置環境變量 將redis安裝目錄配置在path環境變量中之后就可以在cmd窗口的任意位置輸入redis-server命令就可以啟動redis服務…

材料行業可以轉IC設計后端嗎?

近來有許多材料行業的小伙伴通過后臺來問我對于職業規劃的看法,甚至有些小伙伴直接點明了某個行業適不適合自己,那么我這邊僅以近年來比較熱門的數字芯片設計來展開講講,材料適不適合轉行做IC呢。 對于理工科的同學而言,選擇哪個…

Graal 編譯器

一開始,我們來講一個故事。假設有一個名為 John 的開發人員,他正在嘗試編寫一些高性能的 Java 代碼。他遇到了一些性能和速度問題,因為他的應用需要經常從大量的數據源中獲取數據,并進行計算。他嘗試了許多優化工具和技術,但是仍然無法滿足他的需求。在這個時候,他聽說了…

公告:微信小程序備案期限官方要求

備案期限要求 1、若微信小程序未上架,自2023年9月1日起,微信小程序須完成備案后才可上架,備案時間1-20日不等; 2、若微信小程序已上架,請于2024年3月31日前完成備案,逾期未完成備案,平臺將按照…

Android Studio實現列表展示圖片

效果: MainActivity 類 package com.example.tabulation;import android.content.Intent; import android.os.Bundle; import android.view.View;import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; im…

解決 Maven 創建 Spring Boot 項目時出現 “Cannot access alimaven“ 錯誤的方法

系列文章目錄 文章目錄 系列文章目錄前言一、確認 Maven 配置二、創建 Spring Boot 項目三、修改項目的 Maven 配置四、清除 Maven 本地倉庫五、重新構建項目總結前言 Maven 是 Java 項目的構建工具,而 Spring Boot 則是用于快速構建 Spring 應用程序的框架。但有時,在創建 …

Redis擴容與一致性Hash算法解析

推薦閱讀 AI文本 OCR識別最佳實踐 AI Gamma一鍵生成PPT工具直達鏈接 玩轉cloud Studio 在線編碼神器 玩轉 GPU AI繪畫、AI講話、翻譯,GPU點亮AI想象空間 資源分享 「java、python面試題」來自UC網盤app分享,打開手機app,額外獲得1T空間 https://dr…

Java導出數據到Excel

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要導出數據到Excel?二、使用Java導出數據到Excel的步驟1.添加依賴2.編寫導出邏輯3.運行測試總結前言 當今數據處理的場景中,Excel仍然是一個不可或缺的工具,用于存儲、分析和共享數據。在Java應用程序中,有時候需要將數…

神經網絡基礎-神經網絡補充概念-04-梯度下降法

概念 梯度下降法是一種常用的優化算法,用于在機器學習和深度學習中更新模型參數以最小化損失函數。它通過迭代地調整參數,沿著損失函數的負梯度方向移動,從而逐步逼近損失函數的最小值。 基本思想 梯度下降法的基本思想是:在每…

JVM——引言+JVM內存結構

引言 什么是JVM 定義: Java VirtualMachine -java 程序的運行環境 (ava 二進制字節碼的運行環境) 好處: 一次編寫,到處運行自動內存管理,垃圾回收功能數組下標越界檢查,多態 比較: jvm jre jdk 學習jvm的作用 面試理解底層實現原理中…

神經網絡基礎-神經網絡補充概念-63-殘差網絡

概念 殘差網絡(Residual Network,ResNet)是一種深度卷積神經網絡結構,旨在解決深層網絡訓練中的梯度消失和梯度爆炸問題,以及幫助訓練非常深的網絡。ResNet 在2015年被提出,其核心思想是引入了"殘差塊…

前端-ES6

let 和 const 為了解決var的作用域的問題,而且var 有變量提升,會出現全局污染的問題 let 塊狀作用域,并且不能重復聲明const 一般用于聲明常量,一旦被聲明無法修改,但是const 可以聲明一個對象,對象內部的…

工作時使用redis,kafka查閱的資料鏈接

不分先后 一 、redis查閱地址 一篇文章講清楚RedisRedis原理介紹一篇詳文帶你入門 Redis內存耗盡后Redis會發生什么Redis 深入了解鍵的過期時間redis持久化機制Redis延遲問題全面排障指南一文搞定Redis高級特性與性能調優Redis 在 Linux 系統的配置優化Redis 的延遲問題&…

SpringBoot-lombok

為什么要使用lombok? Lombok是一個通過注解以達到減少代碼的Java庫,如通過注解的方式減少getter,setter方法,構造方法等。通過注解的形式自動生成構造器、getter/setter、equals、hashcode、toString等方法,并可以自動化生成日志變量,簡化java開發、提高…

NLP文本匹配任務Text Matching [有監督訓練]:PointWise(單塔)、DSSM(雙塔)、Sentence BERT(雙塔)項目實踐

NLP文本匹配任務Text Matching [有監督訓練]:PointWise(單塔)、DSSM(雙塔)、Sentence BERT(雙塔)項目實踐 0 背景介紹以及相關概念 本項目對3種常用的文本匹配的方法進行實現:Poin…

pyqt5 如何修改QplainTextEdit 背景色和主窗口的一樣顏色

如果您希望將 QPlainTextEdit 的背景顏色設置為與窗口背景相似的灰色,您可以使用窗口的背景顏色作為基準來設置 QPlainTextEdit 的背景顏色。以下是一個示例代碼,展示如何實現這一點: from PyQt5.QtWidgets import QApplication, QMainWindo…