最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)PPT創(chuàng)建文本框并設(shè)置格式的完整步驟

 更新時間:2026年04月28日 08:25:44   作者:站大爺IP  
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)在PPT中創(chuàng)建文本框并設(shè)置格式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

?劉姐是個行政主管,每周要給全公司做周報PPT。內(nèi)容倒是不難,數(shù)據(jù)都是現(xiàn)成的,翻來覆去就那幾項核心指標。最要命的是排版——每頁都要重新拖文本框、調(diào)字號、改字體、設(shè)置行距,一干就是大半個下午。她總跟我抱怨,說最可恨的是下周還得重來一遍。

我告訴她,這些重復(fù)勞動完全可以用代碼一次性寫定。Python里有意思的庫叫python-pptx,專門用來操作PPT。

她將信將疑地看著我:"我連PPT都不熟,還讓我寫代碼?"

如果用代碼來做,核心就是三件要緊事:在哪里放字、寫什么內(nèi)容、文字長什么樣。今天這篇文章,咱們就認認真真說清楚這三件事如何用幾行Python解決。

劉姐的日常,其實就是典型的Office辦公自動化痛點,而這些痛點往往只需要一些經(jīng)驗性的小技巧就能一次性解放。下面我來分享真實的操作細節(jié)。

搭建干凈的"畫布":新建目錄頁

要用代碼在PPT里寫字,得先有個能寫字的頁面。我們直接打開一個新的PPT,在里面添一頁,再在上面放一個文本框:

from pptx import Presentation
from pptx.util import Inches

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])

textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(5), Inches(2))

textbox.text_frame.text = "我是自動生成的"

prs.save("我的第一個文本框.pptx")

剛開始你可能心里犯嘀咕,這些看似復(fù)雜的數(shù)值究竟是干嘛用的。add_textbox方法里有4個必填參數(shù),分別控制文本框離左邊的距離、離上邊的距離、寬度和高度,修改它們可以精確控制文本位置。

運行上面那段代碼,生成的PPT里會多出一頁空白頁面,上面靜靜地躺著一個文本框,寫著“我是自動生成的”。有了這個基礎(chǔ),我們嘗試讓它更豐富一些。

文字有結(jié)構(gòu):TextFrame和Paragraphs

劉姐在做上一周的匯報時,想分點列一下各項業(yè)務(wù)數(shù)據(jù),發(fā)現(xiàn)首航點成了"業(yè)務(wù)數(shù)據(jù)"幾個大字兒,后續(xù)想加上小標題就得手動換行。

這背后涉及到了python-pptx里一個非常關(guān)鍵的點:文本框內(nèi)部不是扁平的,而是存在一個三層級的嵌套關(guān)系。最外層的容器是TextFrame,它決定整個容器的各種行為;容器內(nèi)部又可以包含多個段落Paragraph,每個段落擁有一套獨立的排版樣式;段落內(nèi)部還可以切分成多個“語句塊”Run,用來控制局部的文字細節(jié)。

通俗點,你可以把寫字這件事想象為:

  • 整個PPT畫好的框子:類似于真實的黑色硬殼筆記本封面,只能打開或合上。
  • 每一頁筆記本內(nèi)頁:就像我們的TextFrame,決定這一頁用橫線條紋、格子還是白紙。
  • 每個英文小方塊:就像一個個獨立的小方塊,占據(jù)獨立的位置。

理解了這三層的結(jié)構(gòu),就能在PPT里隨心所欲地寫字,因為大多數(shù)復(fù)雜的排版效果都要用到這三層的配合。

舉個例子,我想在同一個文本框里寫兩段話,第一段普通文字左對齊,第二段的特定幾個詞涂成紅色:

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])

textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(8), Inches(3))
frame = textbox.text_frame

frame.text = "這是第一段"
frame.paragraphs[0].alignment = PP_ALIGN.CENTER

p2 = frame.add_paragraph()
p2.text = "分析數(shù)據(jù)后發(fā)現(xiàn):"

run = p2.add_run()
run.text = "核心KPI"
run.font.bold = True
run.font.color.rgb = RGBColor(255, 0, 0)

run2 = p2.add_run()
run2.text = " 提升20%,超出預(yù)期。"

prs.save("層次結(jié)構(gòu)示例.pptx")

運行后你就會看到,第一段被居中對齊,“核心KPI”變成了紅色加粗。劉姐拿著這個提效成果開周會的時候,臺下看PPT的人會直觀感覺到關(guān)鍵數(shù)字在發(fā)亮。

這種按層次拆解的方式在代碼里執(zhí)行時會感覺過于機械,但好處也非常明顯——排版效果極穩(wěn),很少出意外。

字體、顏色和對齊,一次調(diào)全站

很多人寫周報時一個非常耗時的操作是每頁都反復(fù)調(diào)字體大小、顏色、加粗和解鎖。咱們來看看python-pptx里如何一次性把這些細節(jié)自動搞定。

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])

textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(6), Inches(2))
frame = textbox.text_frame
p = frame.paragraphs[0]
run = p.add_run()
run.text = "2026年春季營收報告"
# 粗體、字體名稱、字號、顏色、居中
run.font.bold = True
run.font.name = "微軟雅黑"
run.font.size = Pt(32)
run.font.color.rgb = RGBColor(0, 112, 192)
p.alignment = PP_ALIGN.CENTER

prs.save("字體顏色示例.pptx")

代碼里的Pt(32)意思是字號32磅。數(shù)字越大字越大。RGBColor里面括號的三個數(shù)字分別代表紅、綠、藍的深度,取值范圍0到255。比如RGBColor(255,0,0)就是最純的紅色,RGBColor(0,255,0)是鮮綠,RGBColor(0,0,255)是亮藍。

在段落層面除了居中對齊(CENTER),還可以選擇左對齊(LEFT)、右對齊(RIGHT)和兩端對齊(JUSTIFY),每種都對應(yīng)PP_ALIGN枚舉里不同的常量。

公司如果有統(tǒng)一的設(shè)計規(guī)范(比如標題用微軟雅黑、正文字號24磅、二級頁眉用18磅帶下劃線),完全可以把這些樣式抽出來寫成配置,用循環(huán)直接應(yīng)用到每一頁。省時又規(guī)范。

行距、邊距和自動換行的精細控制

光會改字體顏色還遠遠不夠,真正把文本擺放得恰到好處,還需掌握兩樣武器:段落行距(Line Spacing)和文本框內(nèi)邊距(Margin)。比如很多人寫PPT時有一個傻習(xí)慣,為了讓排版不那么擠,每段文字后狂按回車,留出一堆空白行。用代碼就完全不需要這么做,你直接設(shè)定段落行距就行。

要設(shè)置段內(nèi)某一段的行距,需要借助LineSpacing對象。不過當(dāng)前正式版的python-pptx暫時不能<行距>,我后來在文檔發(fā)現(xiàn)一個可行的小技巧——先用paragraphspace_beforespace_after屬性控制段落之間的間距:

from pptx.util import Pt

...

p = frame.add_paragraph()
p.text = "嚴格來說,每個段落的頭尾都可以自定義間距"
p.space_before = Pt(12)   # 段前留白12磅
p.space_after = Pt(12)    # 段后留白12磅

官方文檔在需要精確調(diào)整時可以用space_beforespace_after來打出舒服的呼吸感。另外如果要設(shè)置頁邊距,可以直接設(shè)定text frame對象的四種邊距值:

frame.margin_left = Inches(0.2)
frame.margin_right = Inches(0.2)
frame.margin_top = Inches(0.1)
frame.margin_bottom = Inches(0.1)

還有一個極其友好的功能是自動換行和高度自適應(yīng):

frame.word_wrap = True                     # 文字超出自動換行
frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT  # 高度自適應(yīng)

尤其是在寫數(shù)據(jù)分析結(jié)論時,有時候某一段文字特別長,剛才這些開關(guān)能自動把文字完整顯示出來,不用手動增刪文本框。

項目符號與多級列表:讓數(shù)據(jù)分條更清晰

劉姐每次寫周報都要把“數(shù)據(jù)指標”這頁分四五個小點突出展示,手動弄項目符號要一個個按tab和backspace鍵,效率極低。其實python-pptx對項目符號和列表的支持非常完善,而且控制它的核心是兩個屬性:paragraph.bullet開關(guān)和paragraph.level層級。

from pptx import Presentation
from pptx.util import Inches

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])

textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(6), Inches(3))
frame = textbox.text_frame
frame.clear()   # 清理默認段落,防止覆蓋

items = [
    ("分析概覽", 0),
    ("  第一季度營收同比上漲9%", 1),
    ("    華北區(qū)漲幅達15%", 2),
    ("  銷售成本下降12%", 1),
    ("    主要來自高效的供應(yīng)鏈優(yōu)化", 2),
]

for content, level in items:
    p = frame.add_paragraph()
    p.text = content
    p.level = level   # 0代表最外層(一級),數(shù)字越大縮進越深

prs.save("多級列表示例.pptx")

level控制縮進深度:0級項靠左突出主標題,1級代表次一級分論點,2級甚至可以寫更細節(jié)的數(shù)據(jù)支撐。這種多級結(jié)構(gòu)閱后一目了然,非常適合用來寫結(jié)論PPT的邏輯框架。

完整的周報生成腳本

匯總剛才的所有知識點,我們一起寫一段能直接幫劉姐每周生成周報的完整腳本:

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor

def generate_weekly_report(week_num, kpi_data, analysis_list):
    prs = Presentation()
    slide = prs.slides.add_slide(prs.slide_layouts[6])

    # 標題區(qū)
    title_textbox = slide.shapes.add_textbox(Inches(1), Inches(0.5), Inches(8), Inches(1))
    title_frame = title_textbox.text_frame
    title_frame.text = f"第{week_num}周運營周報"
    run_title = title_frame.paragraphs[0].runs[0]
    run_title.font.bold = True
    run_title.font.size = Pt(32)
    run_title.font.name = "微軟雅黑"
    title_frame.paragraphs[0].alignment = PP_ALIGN.CENTER

    # KPI 核心數(shù)據(jù)框(紅色高亮顯示)
    kpi_textbox = slide.shapes.add_textbox(Inches(1), Inches(2), Inches(8), Inches(1))
    kpi_frame = kpi_textbox.text_frame
    kpi_para = kpi_frame.paragraphs[0]
    kpi_para.text = "核心經(jīng)營數(shù)據(jù):"
    run_kpi = kpi_para.add_run()
    run_kpi.text = f" {kpi_data}"
    run_kpi.font.bold = True
    run_kpi.font.color.rgb = RGBColor(255, 0, 0)
    run_kpi.font.size = Pt(24)

    # 分析列表區(qū)(分頁展示每一段觀點)
    analysis_textbox = slide.shapes.add_textbox(Inches(1), Inches(3.5), Inches(8), Inches(3.5))
    analysis_frame = analysis_textbox.text_frame
    analysis_frame.clear()
    for title, detail in analysis_list:
        p = analysis_frame.add_paragraph()
        p.text = f"{title}:{detail}"
        p.level = 0
        p.space_before = Pt(10)
        p.font.size = Pt(16)
        p.font.name = "微軟雅黑"
        if "同比" in detail or "環(huán)比" in detail:
            run_range = p.runs[-1] if p.runs else p.add_run(detail)
            run_range.font.bold = True

    prs.save(f"第{week_num}周運營周報.pptx")
    print(f"? 第{week_num}周運營周報生成完畢!")

# 實際使用時,傳入每周變化的參數(shù)
generate_weekly_report(
    week_num=18,
    kpi_data="周活用戶環(huán)比增長18%,GMV突破860萬",
    analysis_list=[
        ("用戶增長", "新注冊用戶2.8萬,同比增長12%"),
        ("渠道表現(xiàn)", "抖音渠道轉(zhuǎn)化率提升至6.7%"),
        ("產(chǎn)品改進", "上線搜索功能后轉(zhuǎn)化率短期提升5%"),
    ]
)

這段腳本在真實世界里跑起來,可以實現(xiàn)三件事:標題區(qū)居中對齊,核心KPI數(shù)據(jù)紅色大號顯示,分析觀點自動按條排列保證清爽效果。劉姐以后只用改數(shù)字,其他排版全都交給代碼。

避坑指南:實操里經(jīng)常翻車的四件事

經(jīng)過前面這么多操作思路的演示,再看幾個比較隱蔽的陷阱吧,提前避開才能在項目里順暢運行。

1. 修改現(xiàn)有文本框內(nèi)容時格式丟失

如果你用text_frame.text = "新文字"覆蓋原有的內(nèi)容,極大概率會導(dǎo)致字體、段內(nèi)樣式和你之前精心設(shè)置的格式全部丟失。建議增量處理:使用clear()清空段落池,然后調(diào)用add_paragraph()新建各類段落和Run,始終在每個Run對象里明確指定樣式,確保新內(nèi)容的展現(xiàn)精準復(fù)制。

2. 默認段落留底且位置覆蓋

新建一個文本框時,自帶的paragraphs里其實已經(jīng)有一個空段落。如果你直接調(diào)用add_paragraph()追加內(nèi)容,可能會發(fā)現(xiàn)這個空段落占掉了第一行,導(dǎo)致排版錯位。解決辦法是開局先調(diào)用text_frame.clear(),“清空重置,無債一身輕”。

3. 中文顯示小方框

老問題每年都把人坑慘。你生成的PPT里,“正式”兩個字顯示成了兩個整整齊齊的小方塊。python-pptx本身對中文支持良好,但前提是你要明確告訴PPT使用安裝了什么字體庫。例如在代碼里寫run.font.name = "微軟雅黑",Win系統(tǒng)自帶的雅黑基本都能正常呈現(xiàn)。Mac則建議換成"PingFang SC"。如果是Linux服務(wù)器需要渲染中文,記得提前裝文泉驛或其他中文字體。

4. positioningmargin數(shù)值調(diào)錯

add_textboxleft值和容器的左邊界中間隔著一段緩沖內(nèi)縮,不要誤以為left=Inches(0)文字就頂格。如果想實現(xiàn)頂格,你應(yīng)該調(diào)低left值(例如Inches(-0.1)),然后靠margin_left壓縮內(nèi)容的起始位置。

離自動化辦公只差最后一步

文章到這兒告一段落,劉姐現(xiàn)在每周五只花幾分鐘跑一下腳本,生成一份干凈整潔的數(shù)據(jù)周報,把精力全部放在分析數(shù)據(jù)上,而不是拖著文本框來回擺位置。工具越小,事情越穩(wěn)。

python-pptx能做的事遠不止這些。比如你還可以用它批量替換模板里的占位符,給幾十頁PPT插入圖表,或者根據(jù)Excel里的數(shù)據(jù)表格自動生成匯報。

?到此這篇關(guān)于Python實現(xiàn)PPT創(chuàng)建文本框并設(shè)置格式的完整步驟的文章就介紹到這了,更多相關(guān)Python PPT創(chuàng)建文本框并設(shè)置格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python選課系統(tǒng)開發(fā)程序

    Python選課系統(tǒng)開發(fā)程序

    這篇文章主要為大家詳細介紹了Python選課系統(tǒng)開發(fā)程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 如何實現(xiàn)Python調(diào)用Golang代碼詳解

    如何實現(xiàn)Python調(diào)用Golang代碼詳解

    這篇文章主要介紹了如何實現(xiàn)Python調(diào)用Golang代碼,Python和Golang都是當(dāng)下非常流行的編程語言,在實際開發(fā)中,我們可能會遇到需要將Python和Golang進行組合使用的場景,感興趣想要詳細了解可以參考下文
    2023-05-05
  • Python中運算符

    Python中運算符"=="和"is"的詳解

    大家都知道python中有很多的運算符,今天我們就來深入的介紹is和==這兩種運算符以及他們的區(qū)別,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • python找出完數(shù)的方法

    python找出完數(shù)的方法

    今天小編就為大家分享一篇python找出完數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • PyCharm 2020.2.2 x64 下載并安裝的詳細教程

    PyCharm 2020.2.2 x64 下載并安裝的詳細教程

    這篇文章主要介紹了PyCharm 2020.2.2 x64 下載并安裝的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • matplotlib 輸出保存指定尺寸的圖片方法

    matplotlib 輸出保存指定尺寸的圖片方法

    今天小編就為大家分享一篇matplotlib 輸出保存指定尺寸的圖片方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python lambda匿名函數(shù)深入講解

    Python lambda匿名函數(shù)深入講解

    lambda所表示的匿名函數(shù)的內(nèi)容應(yīng)該是很簡單的,如果復(fù)雜的話,干脆就重新定義一個函數(shù)了,使用lambda就有點過于執(zhí)拗了。lambda就是用來定義一個匿名函數(shù)的,如果還要給他綁定一個名字的話,就會顯得有點畫蛇添足,通常是直接使用lambda函數(shù)
    2023-01-01
  • 2020年10款優(yōu)秀的Python第三方庫,看看有你中意的嗎?

    2020年10款優(yōu)秀的Python第三方庫,看看有你中意的嗎?

    2020已經(jīng)過去,在過去的一年里,又有非常多優(yōu)秀的Python庫涌現(xiàn)出來。相對于numpy、TensorFlow、pandas這些已經(jīng)經(jīng)過多年維護、迭代,對于大多數(shù)Python開發(fā)者耳熟能詳?shù)膸觳煌?/div> 2021-01-01
  • Python讀取Word文檔中的Excel嵌入文件的方法詳解

    Python讀取Word文檔中的Excel嵌入文件的方法詳解

    這篇文章主要為大家詳細介紹了Python讀取Word文檔中的Excel嵌入文件的方法,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • pycharm 使用心得(二)設(shè)置字體大小

    pycharm 使用心得(二)設(shè)置字體大小

    pycharm 是很好的一個IDE,在windows下,和macOS下,都能很好的運行。唯一缺點是啟動慢。默認字體太小,在mac下,需要瞪大24K氪金狗眼才能看清。 為了保護好眼睛,我們需要把字體調(diào)整大一些:
    2014-06-06

最新評論

阿拉尔市| 英超| 通化县| 噶尔县| 上杭县| 旬阳县| 利川市| 青海省| 盐山县| 梅河口市| 东港市| 松潘县| 沁源县| 林周县| 本溪市| 定兴县| 蒙自县| 宣化县| 多伦县| 保康县| 永福县| 江口县| 鹤壁市| 乃东县| 若尔盖县| 田阳县| 年辖:市辖区| 新昌县| 博乐市| 惠安县| 沁水县| 边坝县| 衡阳市| 龙岩市| 华池县| 正定县| 什邡市| 前郭尔| 星子县| 平安县| 平遥县|