日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 自动化教程(3) : 自动生成PPT文件 Part 1 (干货)

發布時間:2023/12/20 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 自动化教程(3) : 自动生成PPT文件 Part 1 (干货) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?系列教程:

Python 自動化教程(1) 概述,第一篇 Excel自動化

Python 自動化教程(2) : Excel自動化:使用pandas庫

Python 自動化教程(3) : 自動生成PPT文件 Part 1

Python 自動化教程(4) : 自動生成PPT文件 Part 2

Python 自動化教程(5) : 自動生成Word文件

Python 自動化教程(6) : PDF文件處理

四、自動生成PPT文件?

自動化辦公中,經常要批量處理office文件。

比如:每月花很多時間寫PPT,能自動生成PPT,就好了。

本文的源碼和文件下載請點這里

1、office庫簡介

? ? 本人用 python 寫了一個 office庫,用于辦公自動化,功能是很強的,?包括:PPT自動生成、PPT轉長圖、PPT帶語音播放、Word自動生成、Excel數據處理、圖片處理、視頻處理、office文檔轉為PDF、PDF加解密、加水印等等,都是實用的干貨。

使用方法極簡,大多數功能只需一行、兩行代碼。

1.1、一行代碼自動生成PPT的實戰效果

import office # 以 template.pptx 為模板,創建 output.pptx 文件, 填入datafile.xlsx文件數據, 保存 office.open_file("output.pptx", "template.pptx").fill('datafile.xlsx').save()

代碼簡單,但生成的PPT效果卻是不簡單的。如圖:

?

本教程將office庫源碼、例程、使用方法分享給大家。

1.2、使用PIP?安裝office庫:

請在命令行,通過PIP安裝:

pip install jojo-office

office庫的安裝名稱是 jojo-office

使用時, import office?即可。

import office

office庫依賴庫包括:python-docx, openpyxl, python-pptx, PyPDF4,?reportlab, playsound等,?安裝時將自動安裝完成。

如需要導入導出DataFrame,?則依賴 pandas 庫,請按需要安裝

pip install pandas -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

office庫只支持新版的office文件(擴展名為 .docx, .xlsx, .pptx),不支持office2003以前的老版本office文件(擴展名為 .doc, .xls, .ppt)。

2、自動生成PPT文件的原理

自動生成PowerPoint文件的方法是:首先寫一個模板PowerPoint文件,復制模板創建新文件,再填入數據。?填入不同的數據,則產生不同的PPT文件,從而實現批量生成,?比如:使用每個月的Excel報表文件數據,生成當月的PPT。

模板PPT文件就是一個普通的PPT文件,內容和格式按需要寫。只不過在要填入數據的地方,寫入變量即可。變量的寫法如下:

比如:模板PowerPoint文件 template.pptx, ?幻燈片中的文字內容如下:

其中:大括號 { xxx } 包含文字叫作變量。{name}、{age}就是變量。
生成PPT的過程就是填入數據,將變量將替換為相應的值。name變量將替換為name的值。age變量將替換為age的值。

注意:要使用英文的大括號,不要使用全角字符的大括號,否則變量將無法識別。

3、將Excel文件作為數據源,填入PowerPoint模板文件

3.1 文字

Excel文件是 datafile.xlsx,其 Sheet1工作表B2單元格內容是 'Peter', C2格內容是 18。

模板PowerPoint文件 template1.pptx 寫成這樣:

變量 {Sheet1!B2} 指明 數據來自 Excel文件的 Sheet1 工作表的 B2 單元格。
變量 {Sheet1!C2} 指明 數據來自 Excel文件的 Sheet1 工作表的 C2 單元格。

生成PPT的python程序如下:

import office# 以 template1.pptx 為模板,創建 output.pptx 新文件 # 如果 output.pptx 文件已存在,則將覆蓋原文件 ppt = office.open_file("output.pptx", template="template1.pptx")# 從 datafile.xlsx 文件中取數據, 填入, 保存 ppt.fill('datafile.xlsx').save()

上述程序也可以連寫為一行,如:

office.open_file("output.pptx", "template1.pptx").fill('datafile.xlsx').save()

程序運行后,生成 output.pptx 文件, 其內容如下:

?小結:

?寫模版文件就是在適當的位置寫入變量。變量以 {?號開頭,}?號結尾。

?指向Excel數據的變量名就是?工作表及單元格的引用地址,?如: {Sheet1!B2}?。

生成PPT就是填入數據。同一模板生成不同的PPT,更換數據即可。

填入數據時,格式(包括字體、大小、位置、顏色)都沒有變。

模版PPT文件可以包含多張幻燈片,每一頁上都可寫入變量,數量不限。

3.2 表格

在模板PPT中創建表格,表格的每一列定義一個變量,可以把多行數據填入PPT表格中。

datafile.xlsx 的 Sheet1工作表有一個表格

模板文件 template2.pptx 中畫了一個表格 4行 X 2列,每一列的第一行寫上變量,寫成這樣:

?python程序如下:

import officeppt = office.open_file("output.pptx", template="template2.pptx")# 從 datafile.xlsx 文件中取數據, 填入, 保存 ppt.fill('datafile.xlsx').save()

程序運行后,生成 output.pptx 文件, 其內容如下:

?可見,Excel的表格數據,填入到PPT表格中了。

注:填入表格的數據行數,取決于PPT模板中表格的行數。如果Excel表格行數大于PPT表格行數,則后面的數據不會被填入。

3.3 圖表

在PPT模板中創建圖表。每個圖表有一個數據表,將圖表數據表每一列定義為一個變量。生成PPT時,數據將填入PPT圖表的數據表,則PPT圖表將更新。

在PowerPoint程序中打開模板文件 template3.pptx,創建一個直方圖。

?在PowerPoint程序中, 右鍵單擊圖表,選擇菜單:“編輯數據",? 則可以看到圖表的數據表。

?修改數據表的第一行,每一列的第一行修改為變量,例如:{商品銷售1!B1} 表示本列的數據來自?Excel數據文件的 商品銷售工作表 的 B列。?修改后數據表如下圖:


python程序如下:

import office# 以 template3.pptx 為模板,創建 output.pptx 文件, 填入datafile.xlsx 文件數據, 保存 office.open_file("output.pptx", "template3.pptx").fill('datafile.xlsx').save()

程序運行后,生成 output.pptx 文件, 其內容如下:

?可見,?PPT圖表已更新。

?在PowerPoint中打開剛才生成的文件 output.pptx,右鍵單擊圖表,選擇菜單:“編輯數據",?
則可以看到PPT圖表的數據表已經被更改為Excel文件的相應數據表,如下:

事實上, office庫的處理方法,就是更新PPT圖表的數據表后, 重建圖表。
注:office庫的圖表功能目前支持2D圖表,不支持3D圖表。因此,模板中的圖表不能是3D圖表類型。

3.4 ?插入圖片、視頻、音頻

如果數據是圖片文件名,則可以在PPT中插入該圖片文件。

模板文件 template4.pptx 中畫了一個文本框,填入文字,寫上變量 {@Sheet1!D2},變量名前加上一個 ‘@’字符表明它是一個特殊變量。當它是一個圖片文件名時,將插入該圖片文件。模板如圖:

?python程序如下:

import office# 以 template4.pptx 為模板,創建 output.pptx 文件, 填入datafile.xlsx 文件數據, 保存 office.open_file("output.pptx", "template4.pptx").fill('datafile.xlsx').save()

注意: datafile.xlsx 文件 Sheet1!D2?單元格 的值是 "peter.jpg",是一個圖片文件名。?該文件名沒有指明路徑,因此這個圖片文件要放在當前目錄下。當然,文件名使用絕對路徑則沒有問題。


程序運行后,生成 output.pptx 文件, 其內容如下??梢?#xff0c;PPT文檔插入了一張圖片 peter.jpg,?圖片大小和位置與變量所在的文本框一致。

?同理,? .mp3, .mp4?等音頻、視頻文件也可以插入PPT文檔。

3.5?生成PPT綜合報告

將上述?文字、表格、圖表、圖片功能合在一起,可以生成PPT綜合報告了。

數據文件在 datafile.xlsx ,?這個文件中有多個工作表:?商品銷售、客戶、庫存、匯總。

模板文件 template5.pptx?是一個典型的PPT報告,有表格、圖表、文字、圖片等。其內容如下:

?

python程序如下:

import office# 以 template5.pptx 為模板,創建 report.pptx 文件, 填入datafile.xlsx 文件數據, 保存 office.open_file("report.pptx", "template5.pptx").fill('datafile.xlsx').save()

程序運行后,生成 output.pptx 文件, 其內容如下:

??

3.6?將PPT存盤為一張長圖?

一張長圖就是把PPT每一頁變成圖片,連接為一張長圖。

注意:存盤為長圖的功能,需要本機安裝了Microsoft Powerpoint程序或WPS Office

打開pptx文件,存盤為一個jpg文件,即可保存為一張長圖。

python程序如下:

# 打開 report.pptx, 存盤為 一張長圖 (注:存盤文件名為一個jpg文件,就是保存為一張長圖) office.open_file("report.pptx").save("long.jpg")

?如果長圖需要加水印,則在調用save()時加上 watermark?參數,?程序如下:

# 打開 report.pptx, 存盤為 一張長圖 (注:存盤文件名為一個jpg文件,就是保存為一張長圖) office.open_file("report.pptx").save("long.jpg", watermark="商業秘密,注意保管")

一張漂亮的長圖就產生了。

3.6?將PPT存盤為PDF

# 打開 report.pptx, 存盤為PDF, 加水印 office.open_file("report.pptx").save("report.pdf", watermark="商業秘密,注意保管")

存為PDF,save()文件名取名為 .pdf?即可。 watermark是水印文字。

注意:PPTX轉PDF的功能,需要本機安裝了Microsoft Powerpoint程序或WPS Office

4、循環播放PPT,同步播放語音

放PPT,每隔幾秒自動翻頁,播放到最后一頁后跳回第一頁,循環播放

python程序如下:

# 循環播放PPT,打開 report.pptx, 播放PPT, 每隔3秒換到下一頁 office.open_file("report.pptx").play(3)

程序運行后,將啟動Microsoft Powerpoint程序(或WPS Office),自動進入全屏模式,逐頁顯示PPT,循環播放。上面的代碼是每隔3秒換一頁。播放過程中,按ESC鍵中斷播放,退出程序。

注意:播放PPT的功能,需要本機安裝了Microsoft Powerpoint程序或WPS Office

如果每一頁的跳轉時間不同,可以把間隔時間寫成一個數組。

office.open_file("report.pptx").play([1, 3, 2, 1])

間隔時間數組?[1, 3, 2, 1]?的含義是:?第一頁停1秒,第二頁停3秒,第三頁停2秒,第四頁停1秒。

如果有更多頁,把數組寫長即可。

播放PPT時,可以在播放到某個頁面時同步播放語音文件。

# 循環播放PPT, 在第2頁時,播放語音文件 1.wav office.open_file("report.pptx").play([1,[3, "1.wav"],3,[1, "2.wav"] ])

把間隔時間數組中,需要播放語音的頁面位置寫成?數組, 形如: [間隔秒數,語音文件名]。

如上,?當播放到第二頁時,播放 1.wav,?停留3秒。?當播放到第四頁時,播放 2.wav,?停留1秒。?

也可以把播放間隔寫成一個文本文件。?比如: play.txt,內容如下:

1 3 1.wav 3 1 2.wav

格式為: 每一行表示一頁PPT的播放 間隔秒數 +?空格 +?語音文件名。

則,python程序中,?引用這個文件即可。

office.open_file("report.pptx").play("play.txt")

效果與之前用數組表達的是一樣的。

播放PPT帶語音的應用場景:例如: 開展覽會時,自動放PPT+語音。省去解說人員。

小結:

1, office庫提供了強大的PPT生成功能。

2, 寫一個模板PPT文件,編寫變量。填入數據,即可生成PPT.

3,? 數據可以放在Excel文件中。變量為 Excel的 {工作表!單元格} 即可。

4,PPT可以存為長圖??梢詭дZ音播放。

本文的源碼和文件下載請點這里

續篇:

office庫還有其他許多功能,下節課再講。

office庫還在開發完善中,偶有bug請見諒、或提改進。

有興趣深入研究的,可以看office.py的源碼。

總結

以上是生活随笔為你收集整理的Python 自动化教程(3) : 自动生成PPT文件 Part 1 (干货)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。