使用Python輕松實(shí)現(xiàn)創(chuàng)建與合并PowerPoint幻燈片
在日常工作和報(bào)告制作中,將多個(gè) PowerPoint 演示文稿合并成一個(gè) 是常見需求。例如,公司季度報(bào)告可能包含來自不同部門的幻燈片,或需要將培訓(xùn)內(nèi)容整合到統(tǒng)一文件中。通過 Python 和 Spire.Presentation,你可以輕松實(shí)現(xiàn)幻燈片的合并,無需依賴 PowerPoint 軟件手動(dòng)操作。
本文將演示如何使用 Python 合并兩個(gè)演示文稿,并說明如何選擇 保留原始設(shè)計(jì) 或 使用目標(biāo)演示文稿的母版設(shè)計(jì),幫助你靈活處理不同場(chǎng)景下的合并需求。
本文使用的方法需要用到免費(fèi)的 Free Spire.Presentation for Python,可通過 PyPI 安裝:pip install spire.presentation。
使用Python輕松創(chuàng)建PowerPoint演示文稿
環(huán)境準(zhǔn)備與基礎(chǔ)操作
在開始之前,我們需要安裝spire.presentation庫。打開你的終端或命令行工具,輸入以下命令:
pip install spire.presentation
安裝完成后,我們來嘗試創(chuàng)建一個(gè)最簡(jiǎn)單的PowerPoint演示文稿。
from spire.presentation.common import *
from spire.presentation import *
# 創(chuàng)建一個(gè)演示文稿對(duì)象
ppt = Presentation()
# 保存演示文稿
ppt.SaveToFile("MyFirstPresentation.pptx", FileFormat.Pptx2013)
ppt.Dispose()
print("一個(gè)空白的PowerPoint演示文稿已創(chuàng)建成功!")
這段代碼將創(chuàng)建一個(gè)名為“MyFirstPresentation.pptx”的空白PPT文件。雖然它目前沒有任何內(nèi)容,但我們已經(jīng)邁出了自動(dòng)化的第一步!
填充演示文稿內(nèi)容
現(xiàn)在,讓我們?yōu)檠菔疚母逄砑右恍?shí)際內(nèi)容。
添加幻燈片與布局
PowerPoint通常包含多種預(yù)設(shè)的幻燈片布局,例如標(biāo)題頁、標(biāo)題和內(nèi)容頁等。spire.presentation允許我們選擇這些布局。
from spire.presentation.common import *
from spire.presentation import *
ppt = Presentation()
# 添加一張空白幻燈片 (默認(rèn)布局)
slide1 = ppt.Slides.Append()
# 添加一張帶有標(biāo)題和內(nèi)容的幻燈片
# 這里我們使用一個(gè)預(yù)設(shè)的布局,通常是LayoutType.TitleAndContent
slide2 = ppt.Slides.Append(SlideLayoutType.TitleAndContent)
# 保存演示文稿
ppt.SaveToFile("PresentationWithSlides.pptx", FileFormat.Pptx2013)
ppt.Dispose()
print("已添加帶有不同布局的幻燈片。")
添加文本并設(shè)置樣式
向幻燈片添加文本是演示文稿的核心操作。我們可以設(shè)置文本的字體、大小、顏色等屬性。
from spire.presentation.common import *
from spire.presentation import *
from System.Drawing import Color # 用于設(shè)置顏色
ppt = Presentation()
slide = ppt.Slides.Append(SlideLayoutType.TitleAndContent)
# 獲取幻燈片中的標(biāo)題占位符
title_shape = slide.Shapes.Title
# 設(shè)置標(biāo)題文本
if title_shape:
title_shape.TextFrame.Text = "Python自動(dòng)化PPT教程"
# 設(shè)置標(biāo)題文本樣式
text_range = title_shape.TextFrame.TextRange
text_range.FontHeight = 36
text_range.IsBold = True
text_range.Fill.FillType = FillFormatType.Solid
text_range.Fill.SolidColor.Color = Color.get_DarkBlue()
# 獲取幻燈片中的內(nèi)容占位符
content_shape = slide.Shapes[1] # 通常第二個(gè)形狀是內(nèi)容占位符
# 添加正文文本
if content_shape:
content_shape.TextFrame.Text = "本教程將指導(dǎo)你如何使用Python自動(dòng)化創(chuàng)建和編輯PowerPoint演示文稿。\n\n" \
"自動(dòng)化可以顯著提高工作效率,減少手動(dòng)操作的重復(fù)性和錯(cuò)誤。"
# 獲取第一個(gè)段落
paragraph = content_shape.TextFrame.Paragraphs[0]
# 設(shè)置段落文本樣式
text_range_para = paragraph.TextRanges[0]
text_range_para.FontHeight = 18
text_range_para.Fill.FillType = FillFormatType.Solid
text_range_para.Fill.SolidColor.Color = Color.get_Black()
# 對(duì)第二個(gè)段落進(jìn)行特殊設(shè)置
paragraph2 = content_shape.TextFrame.Paragraphs[1]
text_range_para2 = paragraph2.TextRanges[0]
text_range_para2.FontHeight = 20
text_range_para2.IsItalic = True
text_range_para2.Fill.FillType = FillFormatType.Solid
text_range_para2.Fill.SolidColor.Color = Color.get_DarkGreen()
ppt.SaveToFile("PresentationWithText.pptx", FileFormat.Pptx2013)
ppt.Dispose()
print("已添加帶有文本和樣式的幻燈片。")
插入圖片
視覺元素是演示文稿不可或缺的一部分。我們可以輕松地將本地圖片插入到幻燈片中。
from spire.presentation.common import *
from spire.presentation import *
from System.Drawing import RectangleF
ppt = Presentation()
slide = ppt.Slides.Append()
# 假設(shè)你有一個(gè)名為 "example.png" 的圖片文件在當(dāng)前目錄下
image_path = "example.png" # 請(qǐng)?zhí)鎿Q為你的圖片路徑
# 定義圖片的位置和大小 (x, y, 寬度, 高度)
# 單位是點(diǎn) (points),1英寸 = 72點(diǎn)
x, y, width, height = 100, 150, 400, 250
rect = RectangleF(x, y, width, height)
# 插入圖片
picture = slide.Shapes.AppendEmbedImageByPath(ShapeType.Rectangle, image_path, rect)
ppt.SaveToFile("PresentationWithImage.pptx", FileFormat.Pptx2013)
ppt.Dispose()
print("已成功插入圖片到幻燈片。")
注意:請(qǐng)確保 example.png 圖片文件存在于代碼運(yùn)行的相同目錄下,或者提供完整的圖片路徑。
創(chuàng)建表格 (可選)
如果篇幅允許,我們還可以展示如何創(chuàng)建和填充簡(jiǎn)單的表格。
from spire.presentation.common import *
from spire.presentation import *
from System.Drawing import RectangleF, Color
ppt = Presentation()
slide = ppt.Slides.Append()
# 定義表格的位置和大小
rect = RectangleF(100, 100, 500, 200)
# 添加一個(gè)3行3列的表格
table = slide.Shapes.AppendTable(rect, 3, 3)
# 設(shè)置表格列寬和行高
table.SetColumnWidth(0, 100)
table.SetColumnWidth(1, 200)
table.SetColumnWidth(2, 200)
table.SetRowHeight(0, 30)
table.SetRowHeight(1, 50)
table.SetRowHeight(2, 50)
# 填充表格數(shù)據(jù)
table.Rows[0].Cells[0].TextFrame.Text = "姓名"
table.Rows[0].Cells[1].TextFrame.Text = "部門"
table.Rows[0].Cells[2].TextFrame.Text = "成績(jī)"
table.Rows[1].Cells[0].TextFrame.Text = "張三"
table.Rows[1].Cells[1].TextFrame.Text = "銷售部"
table.Rows[1].Cells[2].TextFrame.Text = "95"
table.Rows[2].Cells[0].TextFrame.Text = "李四"
table.Rows[2].Cells[1].TextFrame.Text = "市場(chǎng)部"
table.Rows[2].Cells[2].TextFrame.Text = "88"
# 設(shè)置表頭背景色
for i in range(table.Columns.Count):
table.Rows[0].Cells[i].CellFormat.Fill.FillType = FillFormatType.Solid
table.Rows[0].Cells[i].CellFormat.Fill.SolidColor.Color = Color.get_LightBlue()
table.Rows[0].Cells[i].TextFrame.TextRange.FontHeight = 16
table.Rows[0].Cells[i].TextFrame.TextRange.IsBold = True
ppt.SaveToFile("PresentationWithTable.pptx", FileFormat.Pptx2013)
ppt.Dispose()
print("已成功創(chuàng)建并填充表格。")
進(jìn)階技巧與最佳實(shí)踐
- 處理復(fù)雜排版: 對(duì)于更復(fù)雜的文本排版,如段落對(duì)齊、行距、項(xiàng)目符號(hào)等,
spire.presentation也提供了相應(yīng)的屬性進(jìn)行設(shè)置。你可以通過探索TextRange、Paragraph和TextFrame對(duì)象的屬性來完成。 - 代碼復(fù)用: 將常用的PPT操作封裝成函數(shù),例如
add_title_slide(presentation, title_text)或add_image_slide(presentation, image_path, caption),可以大大提高代碼的復(fù)用性和可維護(hù)性。 - 模板化: 可以先手動(dòng)創(chuàng)建一個(gè)包含占位符和預(yù)設(shè)樣式的PPT模板,然后使用Python代碼讀取這個(gè)模板,并用實(shí)際數(shù)據(jù)填充占位符,這樣能更好地保持演示文稿的品牌一致性。
- 錯(cuò)誤處理: 在實(shí)際應(yīng)用中,建議加入錯(cuò)誤處理機(jī)制,例如檢查文件是否存在、圖片路徑是否正確等,以提高程序的健壯性。
使用Python 合并 PowerPoint 幻燈片
1. 初始化演示文稿對(duì)象
from spire.presentation import *
from spire.presentation.common import *
# 創(chuàng)建兩個(gè) Presentation 實(shí)例
pres1 = Presentation()
pres2 = Presentation()
# 加載兩個(gè)演示文稿文件
pres1.LoadFromFile("Sample1.pptx")
pres2.LoadFromFile("Sample2.pptx")
操作說明:
Presentation是 Spire.Presentation 的核心類,用于表示 PowerPoint 演示文稿。LoadFromFile()用于加載現(xiàn)有 PPTX 文件,后續(xù)幻燈片操作都在這些對(duì)象上進(jìn)行。
2. 合并幻燈片并保留原始設(shè)計(jì)
# 遍歷第二個(gè)演示文稿中的幻燈片
for slide in pres2.Slides:
# 將每張幻燈片追加到第一個(gè)演示文稿中,保留原設(shè)計(jì)
pres1.Slides.AppendBySlide(slide)
# 保存合并后的演示文稿
pres1.SaveToFile("output/MergePresentations.pptx", FileFormat.Pptx2016)
pres1.Dispose()
pres2.Dispose()
使用說明:
Slides.AppendBySlide(slide)會(huì)將目標(biāo)幻燈片完整復(fù)制到第一個(gè)演示文稿中,并保留幻燈片原有的版式、背景和樣式。- 適用于希望保持原始設(shè)計(jì)風(fēng)格、不統(tǒng)一母版的場(chǎng)景。
- 保存文件后,合并結(jié)果中每張幻燈片都保持其原有外觀。
效果展示:

適用場(chǎng)景:
- 部門匯報(bào)或跨團(tuán)隊(duì)演示,每個(gè)演示文稿風(fēng)格不同,需要保留原始設(shè)計(jì)。
- 幻燈片包含特定背景或定制動(dòng)畫,合并時(shí)不希望被母版覆蓋。
3. 合并幻燈片并使用目標(biāo)母版設(shè)計(jì)
# 遍歷第二個(gè)演示文稿中的幻燈片
for slide in pres2.Slides:
# 將每張幻燈片追加到第一個(gè)演示文稿中,并使用第一個(gè)演示文稿的母版
pres1.Slides.AppendByMaster(slide, pres1.Masters[0])
# 保存合并后的演示文稿
pres1.SaveToFile("output/MergePresentationsDesign.pptx", FileFormat.Pptx2016)
pres1.Dispose()
pres2.Dispose()
操作說明:
Slides.AppendByMaster(slide, pres1.Masters[0])會(huì)將目標(biāo)幻燈片內(nèi)容復(fù)制到第一個(gè)演示文稿中,但應(yīng)用第一個(gè)演示文稿的母版設(shè)計(jì)。- 幻燈片的布局和內(nèi)容會(huì)保留,但背景、主題顏色、字體樣式會(huì)與目標(biāo)母版保持一致。
- 適用于需要統(tǒng)一整體演示風(fēng)格的場(chǎng)景。
效果展示:

適用場(chǎng)景:
- 企業(yè)培訓(xùn)或公司匯報(bào),需要合并內(nèi)容但保持統(tǒng)一的視覺風(fēng)格。
- 合并多個(gè)來源幻燈片并調(diào)整為同一模板風(fēng)格。
4. 總結(jié)
通過上述方法,開發(fā)者可以靈活選擇不同的合并策略:
| 功能類型 | 方法 | 使用說明 |
|---|---|---|
| 保留原始設(shè)計(jì) | Slides.AppendBySlide(slide) | 幻燈片完整復(fù)制,保持原始版式和樣式 |
| 使用目標(biāo)母版設(shè)計(jì) | Slides.AppendByMaster(slide, pres1.Masters[0]) | 幻燈片內(nèi)容復(fù)制到目標(biāo)演示文稿,應(yīng)用目標(biāo)母版設(shè)計(jì) |
| 保存 PPTX 文件 | SaveToFile() | 保存修改后的演示文稿文件 |
| 釋放資源 | Dispose() | 釋放演示文稿對(duì)象資源 |
使用 Spire.Presentation for Python,開發(fā)者無需打開 PowerPoint 即可批量處理幻燈片,靈活合并不同來源的演示文稿,同時(shí)可根據(jù)需求選擇保留原設(shè)計(jì)或統(tǒng)一母版風(fēng)格。
到此這篇關(guān)于使用Python輕松實(shí)現(xiàn)創(chuàng)建與合并PowerPoint幻燈片的文章就介紹到這了,更多相關(guān)Python創(chuàng)建與合并PowerPoint幻燈片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python將PPT的幻燈片和形狀轉(zhuǎn)為多種圖片格式
- 使用Python進(jìn)行PowerPoint幻燈片背景設(shè)置
- 使用Python在PowerPoint幻燈片中添加水印
- Python實(shí)現(xiàn)PPT幻燈片的添加、刪除或隱藏操作
- 使用python提取PowerPoint幻燈片中表格并保存到文本及Excel文件
- Python利用pptx操作PPT實(shí)現(xiàn)幻燈片的刪除與替換
- 使用Python-pptx?告別繁瑣的幻燈片制作
- python opencv 圖像邊框(填充)添加及圖像混合的實(shí)現(xiàn)方法(末尾實(shí)現(xiàn)類似幻燈片漸變的效果)
- python實(shí)現(xiàn)向ppt文件里插入新幻燈片頁面的方法
相關(guān)文章
解決python3 Pycharm上連接數(shù)據(jù)庫時(shí)報(bào)錯(cuò)的問題
今天小編就為大家分享一篇解決python3 Pycharm上連接數(shù)據(jù)庫時(shí)報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python使用pygame實(shí)現(xiàn)笑臉乒乓球彈珠球游戲
這篇文章主要為大家詳細(xì)介紹了python使用pygame實(shí)現(xiàn)笑臉乒乓球彈珠球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
淺談keras中自定義二分類任務(wù)評(píng)價(jià)指標(biāo)metrics的方法以及代碼
這篇文章主要介紹了淺談keras中自定義二分類任務(wù)評(píng)價(jià)指標(biāo)metrics的方法以及代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例
今天小編就為大家分享一篇python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的根據(jù)文件名查找數(shù)據(jù)文件功能,涉及Python針對(duì)文件與目錄的遍歷、查詢等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
基于Python實(shí)現(xiàn)一個(gè)具有記憶功能的AI對(duì)話代理
在人工智能應(yīng)用蓬勃發(fā)展的今天,如何讓AI系統(tǒng)具備記憶能力成為了提升用戶體驗(yàn)的關(guān)鍵,本文將深入解析一個(gè)基于Python的AI對(duì)話代理實(shí)現(xiàn),它能夠記住用戶的歷史對(duì)話,從而實(shí)現(xiàn)更加連貫和個(gè)性化的交流,需要的朋友可以參考下2025-12-12
Python實(shí)現(xiàn)鎖定指定Excel單元格區(qū)域
本文將演示如何使用 Python 實(shí)現(xiàn) Excel 指定單元格區(qū)域鎖定,公式單元格隱藏保護(hù),工作表密碼防護(hù),多工作表批量鎖定與解除保護(hù),所有代碼示例可直接復(fù)用至自動(dòng)化業(yè)務(wù)腳本,感興趣的小伙伴可以了解下2026-05-05

