当前位置: 首页 > article >正文

使用 Python 在 PPT 中创建文本框并设置格式的详细方法

刘姐是个行政主管每周要给全公司做周报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.save(我的第一个文本框.pptx)刚开始你可能心里犯嘀咕这些看似复杂的数值究竟是干嘛用的。add_textbox方法里有4个必填参数分别控制文本框离左边的距离、离上边的距离、宽度和高度修改它们可以精确控制文本位置。运行上面那段代码生成的PPT里会多出一页空白页面上面静静地躺着一个文本框写着“我是自动生成的”。有了这个基础我们尝试让它更丰富一些。文字有结构TextFrame和Paragraphs刘姐在做上一周的汇报时想分点列一下各项业务数据发现首航点成了业务数据几个大字儿后续想加上小标题就得手动换行。这背后涉及到了python-pptx里一个非常关键的点文本框内部不是扁平的而是存在一个三层级的嵌套关系。最外层的容器是TextFrame它决定整个容器的各种行为容器内部又可以包含多个段落Paragraph每个段落拥有一套独立的排版样式段落内部还可以切分成多个“语句块”Run用来控制局部的文字细节。通俗点你可以把写字这件事想象为整个PPT画好的框子类似于真实的黑色硬壳笔记本封面只能打开或合上。每一页笔记本内页就像我们的TextFrame决定这一页用横线条纹、格子还是白纸。每个英文小方块就像一个个独立的小方块占据独立的位置。理解了这三层的结构就能在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.save(层次结构示例.pptx)运行后你就会看到第一段被居中对齐“核心KPI”变成了红色加粗。刘姐拿着这个提效成果开周会的时候台下看PPT的人会直观感觉到关键数字在发亮。这种按层次拆解的方式在代码里执行时会感觉过于机械但好处也非常明显——排版效果极稳很少出意外。字体、颜色和对齐一次调全站很多人写周报时一个非常耗时的操作是每页都反复调字体大小、颜色、加粗和解锁。咱们来看看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.save(字体颜色示例.pptx)代码里的Pt(32)意思是字号32磅。数字越大字越大。RGBColor里面括号的三个数字分别代表红、绿、蓝的深度取值范围0到255。比如RGBColor(255,0,0)就是最纯的红色RGBColor(0,255,0)是鲜绿RGBColor(0,0,255)是亮蓝。在段落层面除了居中对齐CENTER还可以选择左对齐LEFT、右对齐RIGHT和两端对齐JUSTIFY每种都对应PP_ALIGN枚举里不同的常量。公司如果有统一的设计规范比如标题用微软雅黑、正文字号24磅、二级页眉用18磅带下划线完全可以把这些样式抽出来写成配置用循环直接应用到每一页。省时又规范。行距、边距和自动换行的精细控制光会改字体颜色还远远不够真正把文本摆放得恰到好处还需掌握两样武器段落行距Line Spacing和文本框内边距Margin。比如很多人写PPT时有一个傻习惯为了让排版不那么挤每段文字后狂按回车留出一堆空白行。用代码就完全不需要这么做你直接设定段落行距就行。要设置段内某一段的行距需要借助LineSpacing对象。不过当前正式版的python-pptx暂时不能行距我后来在文档发现一个可行的小技巧——先用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.save(多级列表示例.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.save(f第{week_num}周运营周报.pptx) print(f✅ 第{week_num}周运营周报生成完毕) # 实际使用时传入每周变化的参数 generate_weekly_report( week_num18, 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 微软雅黑Win系统自带的雅黑基本都能正常呈现。Mac则建议换成PingFang SC。如果是Linux服务器需要渲染中文记得提前装文泉驿或其他中文字体。4.positioning和margin数值调错add_textbox的left值和容器的左边界中间隔着一段缓冲内缩不要误以为leftInches(0)文字就顶格。如果想实现顶格你应该调低left值例如Inches(-0.1)然后靠margin_left压缩内容的起始位置。离自动化办公只差最后一步文章到这儿告一段落刘姐现在每周五只花几分钟跑一下脚本生成一份干净整洁的数据周报把精力全部放在分析数据上而不是拖着文本框来回摆位置。工具越小事情越稳。python-pptx能做的事远不止这些。比如你还可以用它批量替换模板里的占位符给几十页PPT插入图表或者根据Excel里的数据表格自动生成汇报。

相关文章:

使用 Python 在 PPT 中创建文本框并设置格式的详细方法

刘姐是个行政主管,每周要给全公司做周报PPT。内容倒是不难,数据都是现成的,翻来覆去就那几项核心指标。最要命的是排版——每页都要重新拖文本框、调字号、改字体、设置行距,一干就是大半个下午。她总跟我抱怨,说最可恨…...

CodeWeaver:用Go实现的代码库文档化工具,助力AI编程与团队协作

1. 项目概述:CodeWeaver,一个为AI时代而生的代码库文档化工具 如果你和我一样,经常需要把整个项目的代码库打包成一个文件,扔给大语言模型(比如ChatGPT、Claude或者Cursor的AI)去分析,或者只是…...

保姆级教程:用GEMMA 0.98.5做GWAS分析,从数据整理到遗传力解读,一次搞定

GEMMA 0.98.5实战指南:从GWAS分析到遗传力深度解析 在基因组学研究中,全基因组关联分析(GWAS)已成为揭示复杂性状遗传基础的重要工具。而GEMMA作为一款高效的混合线性模型(MLM)实现软件,凭借其优秀的计算性能和稳定的算法表现,在生…...

florr.io新手必看:从Ant Egg到Mythic,一份超详细的生物掉落率速查表(附实战心得)

florr.io生物掉落率全解析:从Ant Egg到Mythic的实战效率手册 刚入坑florr.io时,你是否也经历过盯着满屏生物却不知道刷哪个的迷茫?当背包里塞满Common级材料却卡在装备升级瓶颈时,是否想过"如果早知道这个掉落率就好了"…...

告别Electron!用Qt QWebEngine + QWebChannel 打造高性能桌面混合应用(附完整Demo)

突破Electron性能瓶颈:Qt QWebEngine与QWebChannel混合开发实战指南 在桌面应用开发领域,Electron框架凭借其跨平台特性和Web技术栈的易用性长期占据主导地位。然而随着应用复杂度提升,Electron的内存占用高、启动缓慢和包体积庞大等问题逐渐…...

雀魂AI助手Akagi:3分钟学会用AI提升你的麻将水平

雀魂AI助手Akagi:3分钟学会用AI提升你的麻将水平 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuki, …...

2025届最火的降AI率平台推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在撰写毕业论文的进程当中,人工智能工具能够显著地提高文献整理效率,…...

别再只用ECharts了!试试用Three.js为你的数据大屏打造酷炫3D地图底座(Vue3+TS版)

突破平面边界:用Three.js与Vue3构建下一代3D地理可视化方案 当数据大屏遇上3D地图,传统的二维图表突然显得单薄无力。去年某全球电商平台的数据显示,采用3D可视化的运营大屏用户停留时长提升47%,这背后是立体空间带来的信息纵深与…...

如何快速在云端启动VSCode:colabcode 5分钟入门指南

如何快速在云端启动VSCode:colabcode 5分钟入门指南 【免费下载链接】colabcode Run VSCode (codeserver) on Google Colab or Kaggle Notebooks 项目地址: https://gitcode.com/gh_mirrors/co/colabcode colabcode是一个强大的工具,能够帮助用户…...

2025届最火的六大降重复率神器实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek DeepSeek身为智能写作辅助工具,于学术论文撰写里呈现出显著效能,用户…...

VS Code Copilot Next 配置黄金标准(2024企业级落地白皮书)

更多请点击: https://intelliparadigm.com 第一章:VS Code Copilot Next 自动化工作流配置对比评测报告概述 VS Code Copilot Next 是微软与 GitHub 联合推出的下一代智能编程助手,其核心升级聚焦于本地化推理、上下文感知增强及可扩展工作流…...

【限时技术解禁】Docker AI Toolkit 2026企业版密钥注入机制首度披露:RBAC+模型水印+审计日志三级合规配置(含OpenSSF Scorecard 9.8分验证路径)

更多请点击: https://intelliparadigm.com 第一章:Docker AI Toolkit 2026企业版密钥注入机制全景概览 Docker AI Toolkit 2026企业版引入了零信任密钥注入框架(Zero-Trust Key Injection Framework, ZKIF),通过容器生…...

yt-dlp-gui开发者指南:如何扩展新的视频平台支持

yt-dlp-gui开发者指南:如何扩展新的视频平台支持 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui yt-dlp-gui是一款强大的Windows视频下载工具,它为命令行工具yt-dlp提供了直观的图…...

告别“画饼”:PLUTO如何用对比学习让自动驾驶规划更像老司机?

PLUTO框架:用对比学习重塑自动驾驶决策逻辑 1. 自动驾驶规划的技术演进困境 当特斯拉车辆在十字路口突然急刹,或Waymo无人车在无保护左转时犹豫不决,这些现象揭示了当前自动驾驶规划系统的根本性挑战——如何让机器理解驾驶场景中的因果逻辑。…...

从‘False’到‘True’:一次搞定Windows下PyTorch与CUDA环境联调(以RTX 3060 + CUDA 11.6实战为例)

从‘False’到‘True’:一次搞定Windows下PyTorch与CUDA环境联调(以RTX 3060 CUDA 11.6实战为例) 去年夏天,当我第一次在个人电脑上尝试运行深度学习模型时,torch.cuda.is_available()那个刺眼的False让我意识到——…...

明日方舟游戏资源库:如何一站式获取超过12000个高清游戏素材

明日方舟游戏资源库:如何一站式获取超过12000个高清游戏素材 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 你是否曾为寻找高质量的游戏开发素材而烦恼?是否在…...

从Rancher Server到Node Agent:一张图看懂Rancher 2.8架构,搞懂它如何“遥控”你的K8s

Rancher 2.8架构深度解析:从UI点击到Pod创建的完整链路追踪 当你点击Rancher UI上的"创建工作负载"按钮时,这个看似简单的操作背后究竟发生了什么?本文将带你穿透表象,沿着请求链路逐层拆解Rancher 2.8的完整架构体系。…...

[特殊字符] 终极漫画阅读体验:Venera 开源阅读器完整指南!

🌟 终极漫画阅读体验:Venera 开源阅读器完整指南! Venera 是一款免费开源的漫画阅读神器,支持本地与网络漫画无缝阅读,让你随时随地享受沉浸式漫画时光!无论是珍藏的本地漫画文件,还是热门的网…...

AI遗嘱规划师:模型生命终结协议

从软件到遗产的测试思维跃迁在数字化浪潮的深处,一个全新的职业疆域正在被开垦。当人工智能模型从实验室走向社会,融入生活的毛细血管,它们不仅输出智能,也悄然累积着价值、责任与潜在的“数字人格”。作为一名软件测试从业者&…...

令牌管理革命:Tiktokenizer如何实现AI成本精准控制

令牌管理革命:Tiktokenizer如何实现AI成本精准控制 【免费下载链接】tiktokenizer Online playground for OpenAPI tokenizers 项目地址: https://gitcode.com/gh_mirrors/ti/tiktokenizer 在AI应用开发实践中,技术团队面临着一个看似简单却影响深…...

如何快速入门数据工程:GitHub精选项目data-engineer-handbook完整指南

如何快速入门数据工程:GitHub精选项目data-engineer-handbook完整指南 【免费下载链接】data-engineer-handbook This is a repo with links to everything youd ever want to learn about data engineering 项目地址: https://gitcode.com/GitHub_Trending/da/da…...

多模态大语言模型推理能力提升方法DRIFT解析

1. 多模态大语言模型的推理能力困境多模态大语言模型(MLLMs)近年来在视觉-语言联合理解方面取得了显著进展,能够完成图像描述生成、视觉问答等任务。然而,当我们深入考察这些模型在需要多步推理的复杂任务(如数学解题、…...

EmojiOne彩色字体终极指南:5分钟打造跨平台表情统一体验

EmojiOne彩色字体终极指南:5分钟打造跨平台表情统一体验 【免费下载链接】emojione-color OpenType-SVG font of EmojiOne 2.3 项目地址: https://gitcode.com/gh_mirrors/em/emojione-color 你是否曾在不同设备上看到同一个表情符号显示完全不同&#xff1f…...

Python新手必看:遇到‘utf-8‘解码失败别慌,这3个排查步骤帮你搞定(附requests库实战)

Python编码问题实战:从SyntaxError到数据处理的完整解决方案 刚接触Python处理文本数据时,看到终端突然抛出SyntaxError: (unicode error) utf-8 codec cant decode byte 0xa3 in position 15: invalid start这样的错误信息,很多新手会感到手…...

iziModal事件系统完全指南:如何监听和控制模态框生命周期

iziModal事件系统完全指南:如何监听和控制模态框生命周期 【免费下载链接】iziModal Elegant, responsive, flexible and lightweight modal plugin with jQuery. 项目地址: https://gitcode.com/gh_mirrors/iz/iziModal iziModal是一款优雅、响应式、灵活且…...

LiteMall开源商城系统实战指南:Spring Boot + Vue + 微信小程序全栈深度解析

LiteMall开源商城系统实战指南:Spring Boot Vue 微信小程序全栈深度解析 【免费下载链接】litemall 又一个小商城。litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端 项目地址: https://gitcode.com/gh_mirrors/li/litemall …...

CompLLM:大语言模型长上下文处理技术解析

1. CompLLM:长上下文处理的技术革新 在当今大语言模型(LLM)应用中,处理长上下文一直是个棘手的问题。想象一下,当你让AI助手分析一份100页的技术文档时,传统方法就像要求一个人同时记住并处理整本书的内容—…...

WarcraftHelper终极优化指南:2024年魔兽争霸III完全配置教程

WarcraftHelper终极优化指南:2024年魔兽争霸III完全配置教程 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸III》在现代…...

React-antd-admin-template国际化与主题切换功能实现教程

React-antd-admin-template国际化与主题切换功能实现教程 【免费下载链接】react-antd-admin-template 一个基于ReactAntd的后台管理模版,在线预览https://nlrx-wjc.github.io/react-antd-admin-template/ 项目地址: https://gitcode.com/gh_mirrors/re/react-ant…...

暗黑2存档编辑器终极指南:10分钟掌握游戏角色自定义

暗黑2存档编辑器终极指南:10分钟掌握游戏角色自定义 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾经梦想过在暗黑破坏神2中拥有完美的角色?是否厌倦了反复刷怪只为获得一件稀有装备&#xff1f…...