展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python实现PPT创建文本框并设置格式的完整步骤

Python实现PPT创建文本框并设置格式的完整步骤

使用Python的python-pptx库可自动创建PPT文本框并精细设置格式。通过控制文本框、段落与run三层结构,实现字体、颜色、对齐、行距、项目符号等排版。代码能一次性完成重复性操作,大幅提升办公效率。

本文目录

    刘姐是公司的行政主管,每周雷打不动要给全公司做周报PPT。活儿本身不难,数据都是现成的,翻来覆去就那几项。但要命的是排版——每页都得手动拖文本框、调字号、改字体、设行距,一套流程下来,大半个下午就搭进去了。她跟我吐槽过好几次,说最可恨的是,下周还得重来一遍。

    Python实现PPT创建文本框并设置格式的完整步骤

    我跟她说,这些重复劳动,写几行代码就能一次性搞定。Python里有个叫python-pptx的库,就是专门干这个的。

    她当时一脸将信将疑:“我连PPT都不熟,你还让我写代码?”

    其实用代码做PPT,核心问题就三个:在哪里放字、写什么内容、文字长什么样。今天这篇文章,咱们就把这三件事掰开揉碎了,看看怎么用几行Python代码轻松解决。

    刘姐遇到的困境,就是典型的Office办公自动化痛点。 这些痛点往往只需要一点经验性的小技巧,就能换来一劳永逸的解放。下面,咱们就来看看具体的操作细节。

    搭建干净的“画布”:新建目录页

    要在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.sa ve("我的第一个文本框.pptx")
    

    刚开始,你可能会对这些数字的意义犯嘀咕。其实add_textbox方法里的四个参数,分别控制的是文本框离左侧的距离、离顶部的距离、宽度和高度。修改这些数值,就能精确控制文本的位置。

    跑一遍上面的代码,生成的PPT里就会多一页空白页,上面静静地躺着一个文本框,写着“我是自动生成的”。有了这个基础,我们再让它变得更丰富些。

    文字有结构:TextFrame和Paragraphs

    刘姐在做上一周的汇报时,想把几项业务数据分点列出来。结果发现,标题“业务数据”是一个大字,后面想加小标题就得手动换行,特别麻烦。

    这背后其实涉及到了python-pptx里一个非常关键的概念:文本框内部不是扁平的,而是存在一个三层级的嵌套关系。最外层的容器是TextFrame,它决定了整个容器的各种行为;容器内部又可以包含多个段落Paragraph,每个段落都有一套独立的排版样式;而段落内部,还可以继续切分成多个“语句块”Run,用来控制局部的文字细节。

    打个比方,你可以把在PPT里写字想象成这样:

    • 整个PPT画好的框子:就像一本笔记本的硬壳封面,决定了它的存在。
    • 每一页笔记本内页:就像我们的TextFrame,决定了这一页是横线、格子还是白纸。
    • 页面上的每一行字:就像Paragraph,占据一个独立的位置,可以有自己的对齐方式。

    理解了这三层结构,在PPT里写字就跟打字一样随心所欲了。 因为大多数复杂的排版效果,都需要用到这三层的配合。

    举个例子,我想在同一个文本框里写两段话,第一段普通文字居中对齐,第二段里的几个关键词涂成红色:

    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 = "分析数据后发现:"
    
    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%,超出预期。"
    
    prs.sa ve("层次结构示例.pptx")
    

    跑一遍你就能看到,第一段被置中了,而“核心KPI”这几个字变成了红色加粗。刘姐拿着这个成果去开周会,台下看PPT的人一眼就能抓住关键数字。

    这种按层次拆解的方式,写代码的时候会觉得有点“机械”,但好处也显而易见——排版效果极其稳定,很少出bug。

    字体、颜色和对齐,一次调全站

    很多人写周报时,最耗时的操作就是每页反复调字体大小、颜色、加粗。咱们来看看python-pptx里怎么一次性把这些细节搞定。

    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.sa ve("字体颜色示例.pptx")
    

    代码里的Pt(32)意思是字号32磅。数字越大字越大。RGBColor里括号的三个数字分别代表红、绿、蓝的深度,取值范围0到255。比如RGBColor(255,0,0)就是最纯的红。

    在段落层面,除了居中对齐(CENTER),还可以选择左对齐(LEFT)、右对齐(RIGHT)和两端对齐(JUSTIFY)。

    公司如果有统一的设计规范(比如标题用微软雅黑、正文字号24磅、二级页眉用18磅带下划线),完全可以把这些样式抽出来写成配置,用循环直接应用到每一页。省时还规范。

    行距、边距和自动换行的精细控制

    光会改字体颜色还不够,真正让文本摆放得恰到好处,还需要掌握两样武器:段落行距和文本框内边距。很多人写PPT时有个傻习惯,为了让排版不显得拥挤,每段文字后狂按回车,留出一堆空白。用代码就完全不用这样,直接设定段落间距就行。

    要设置段落间距,可以使用paragraph的space_before和space_after属性:

    from pptx.util import Pt
    
    ...
    
    p = frame.add_paragraph()
    p.text = "严格来说,每个段落的头尾都可以自定义间距"
    p.space_before = Pt(12)   # 段前留白12磅
    p.space_after = Pt(12)    # 段后留白12磅
    

    真是从官方文档里翻出来的技巧,用space_before和space_after来调整段落间距,能让版面有很舒服的呼吸感。另外,如果要设置页边距,可以直接设定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)
    

    还有一个极其友好的功能是自动换行和高度自适应:

    frame.word_wrap = True                     # 文字超出自动换行
    frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT  # 高度自适应
    

    尤其是在写数据分析结论时,有时候某一段文字特别长,这几个开关能自动把文字完整显示出来,不用你手动去拖拽文本框。

    项目符号与多级列表:让数据分条更清晰

    刘姐每次写周报,都要把“数据指标”这页分四五个小点展示,手动弄项目符号要一个个按Tab和Backspace键,效率极低。其实python-pptx对项目符号的支持非常完善,控制它的核心是两个属性:paragraph.bullet开关和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),
        ("    华北区涨幅达15%", 2),
        ("  销售成本下降12%", 1),
        ("    主要来自高效的供应链优化", 2),
    ]
    
    for content, level in items:
        p = frame.add_paragraph()
        p.text = content
        p.level = level   # 0代表最外层(一级),数字越大缩进越深
    
    prs.sa ve("多级列表示例.pptx")
    

    level控制缩进深度:0级是主标题,1级是次一级分论点,2级甚至可以写更细节的数据支撑。这种多级结构一目了然,非常适合用来构建结论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])
    
        # 标题区
        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 核心数据框(红色高亮显示)
        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 = "核心经营数据:"
        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)
    
        # 分析列表区(分页展示每一段观点)
        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 "环比" in detail:
                run_range = p.runs[-1] if p.runs else p.add_run(detail)
                run_range.font.bold = True
    
        prs.sa ve(f"第{week_num}周运营周报.pptx")
        print(f"✅ 第{week_num}周运营周报生成完毕!")
    
    # 实际使用时,传入每周变化的参数
    generate_weekly_report(
        week_num=18,
        kpi_data="周活用户环比增长18%,GMV突破860万",
        analysis_list=[
            ("用户增长", "新注册用户2.8万,同比增长12%"),
            ("渠道表现", "抖音渠道转化率提升至6.7%"),
            ("产品改进", "上线搜索功能后转化率短期提升5%"),
        ]
    )
    

    这段脚本跑起来,可以实现三件事:标题区居中对齐,核心KPI数据红色大号显示,分析观点自动按条排列。以后刘姐只用改数字,其他排版全都交给代码。

    避坑指南:实操里经常翻车的四件事

    看完了前面的操作,咱们再来聊聊几个比较隐蔽的陷阱,提前避开,才能让项目跑得顺畅。

    1. 修改现有文本框内容时格式丢失

    如果你用text_frame.text = "新文字"去覆盖原有内容,几乎可以肯定,你之前精心设置的字体、段内样式等所有格式都会丢失。建议的做法是:先用clear()清空段落池,然后调用add_paragraph()新建各类段落和Run,始终在每个Run对象里明确指定样式,确保新内容的展现是精准可复制的。

    2. 默认段落留底且位置覆盖

    新建一个文本框时,它自带的paragraphs里其实已经有一个空段落了。如果你直接调用add_paragraph()追加内容,会发现这个空段落占掉了第一行,导致排版错位。解决办法很简单:开局先调用text_frame.clear(),清空重置,无债一身轻。

    3. 中文显示小方框

    这个老问题每年都能坑到不少人。你生成的PPT里,“正式”两个字可能显示成了两个方方正正的小方块。python-pptx本身对中文支持良好,但前提是你要明确告诉PPT使用什么字体。比如在代码里写run.font.name = "微软雅黑",Windows系统自带的雅黑基本都能正常显示。Mac系统则建议换成"PingFang SC"。如果你是在Linux服务器上跑,记得提前装好文泉驿或其他中文字体。

    4. positioning和margin数值调错

    add_textbox的left值和容器的左边界之间,其实是隔着一段缓冲内缩的。不要误以为left=Inches(0)文字就顶格了。如果你想实现顶格效果,应该将left值调低(比如Inches(-0.1)),然后靠margin_left来压缩内容的起始位置。

    离自动化办公只差最后一步

    好了,文章到这儿就告一段落了。现在的刘姐,每周五只花几分钟跑一下脚本,就能生成一份干净整洁的数据周报。她把精力全部放在分析数据上,再也不用拖着文本框来回摆位置了。你看,工具越小,事情反而越稳。

    python-pptx能做的事远不止这些。比如,你还可以用它批量替换模板里的占位符,给几十页PPT插入图表,或者根据Excel里的数据自动生成一份汇报。打开这扇门,你会发现一个全新的世界。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。