<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
實驗結果拍攝了一組圖片,數量較大,想要按順序組合排版,比較簡單的方式是在PPT中插入圖片進行排版。但是PPT批次插入圖片後,順序打亂且不顯示圖片名稱,每個圖片單獨調整位置和大小費時費力,於是想到使用工具批次操作。過去了解過python自動化辦公模組,相對來說python也是簡單易用的語言,專案預計不會耗費太大精力,故嘗試學習實踐一番。(非專業學習筆記分享,望各位大佬不吝指導!)
資料為16組實驗,每組實驗重複兩次,共32個圖片,所有圖片為正方形,
命名方式為:
1.png,1-5.png,2.png,2-5.png … … … … 16.png,16-5.png
需嚴格按照順序排列
安裝
pip install python-pptx
依賴
Python 2.6, 2.7, 3.3, 3.4, or 3.6
lxml
Pillow
XlsxWriter (to use charting features)
基礎操作程式碼概覽:
import collections.abc from pptx import Presentation, util prs = Presentation() # 範例化一個ppt簡報物件 blank_slide_layout = prs.slide_layouts[6] # 範例化空白模板 slide = prs.slides.add_slide(blank_slide_layout) # 向檔案中新增空白頁面 img_path = './1.png' # 圖片路徑 # 設定圖片的位置和大小 left = util.Cm(0) top = util.Cm(0) width = util.Cm(4) height = util.Cm(4) # 在頁面中插入圖片 pic = slide.shapes.add_picture(img_path, left, top, width, height) prs.save('自動生成的ppt.pptx') # 儲存為檔案
第一步:建立一個PPT檔案
from pptx import Presentation prs = Presentation() # 範例化一個ppt簡報物件 # 中間補充具體操作新增內容 prs.save('自動生成的ppt.pptx') # 儲存為檔案
此時踩了第一個坑,執行結果報錯:AttributeError: module 'collections' has no attribute 'Container'
原因是python 3.10版本支援問題,此時在開頭多匯入一個依賴包collections.abc即可解決。
import collections.abc
第二步:新建頁面
prs.slide_layouts是Presentation物件的預設頁面模板,是一個陣列,共11個,可通過迴圈檢視所有預設頁面模板。
prs.slides.add_slide( )方法可向檔案中新增模板頁面。預設第7個模板為空白頁面。
n = len(prs.slide_layouts) print("頁面模板數量:", n) for i in range(n): slide_layout = prs.slide_layouts[i] # 範例化模板頁面 slide = prs.slides.add_slide(slide_layout) # 向檔案中新增模板頁面
單獨新增一個空白頁面僅需如下程式碼:
blank_slide_layout = prs.slide_layouts[6] # 範例化空白模板頁面 slide = prs.slides.add_slide(blank_slide_layout) # 向檔案中新增空白頁面
第三步:新增圖片
新增圖片可使用如下方法,
pic = slide.shapes.add_picture(img_path, left, top, width, height)
位置和大小屬性預設為英制單位EMU,可轉化為釐米,用如下方法定義:
from pptx import util img_path = './1.png' # 圖片路徑 left = util.Cm(0) top = util.Cm(0) width = util.Cm(4) height = util.Cm(4)
此時便可得到一個在左上角插入圖片的頁面。
1. 改變幻燈片頁面大小
預設生成的頁面大小為 4 : 3 大小的頁面畫布,可通過修改Presentation物件的屬性改變大小,如下:
prs.slide_width = util.Cm(32) prs.slide_height = util.Cm(18)
2. 根據需要排列圖片位置
# 讀取圖片列表 pic_list = [] for i in listdir(): if '.png' in i: pic_list.append(i) print('圖片列表:n', pic_list) # 設定圖片的大小 width = util.Cm(4) height = util.Cm(4) for p in pic_list: # 圖片路徑 img_path = './' + p # 設定圖片位置 n = pic_list.index(p) if n < 16: if '-' not in p: top = util.Cm(0) left = util.Cm((n - 1) * 2) else: top = util.Cm(5) left = util.Cm(n * 2) else: if '-' not in p: top = util.Cm(10) left = util.Cm((n - 17) * 2) else: top = util.Cm(15) left = util.Cm((n - 16) * 2) # 在頁面中插入圖片 pic = slide.shapes.add_picture(img_path, left, top, width, height)
import collections.abc from pptx import Presentation, util from os import listdir # 範例化一個ppt簡報物件 prs = Presentation() # 調整頁面大小 prs.slide_width = util.Cm(32) prs.slide_height = util.Cm(19) # 範例化空白模板 blank_slide_layout = prs.slide_layouts[6] # 向檔案中新增空白頁面 slide = prs.slides.add_slide(blank_slide_layout) # 讀取圖片列表 pic_list = [] for i in listdir(): if '.png' in i: pic_list.append(i) print('圖片列表:n', pic_list) # 設定圖片的大小 width = util.Cm(4) height = util.Cm(4) for p in pic_list: # 圖片路徑 img_path = './' + p # 設定圖片位置 n = pic_list.index(p) if n < 16: if '-' not in p: top = util.Cm(0) left = util.Cm((n - 1) * 2) else: top = util.Cm(5) left = util.Cm(n * 2) else: if '-' not in p: top = util.Cm(10) left = util.Cm((n - 17) * 2) else: top = util.Cm(15) left = util.Cm((n - 16) * 2) # 在頁面中插入圖片 pic = slide.shapes.add_picture(img_path, left, top, width, height) # 儲存為檔案 prs.save('自動生成的ppt.pptx')
到此這篇關於python實現pptx批次向PPT中插入圖片的文章就介紹到這了,更多相關python pptx向PPT插圖片內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45