首页/新闻资讯/正文详情

Python自动化办公三件套:Excel、Word、PPT核心库与实战指南

发布时间:2026/11/3 6:06:13 来源:云帆数科 栏目:资讯中心
Python自动化办公三件套:Excel、Word、PPT核心库与实战指南
简介这份Python自动化办公教程面向希望用编程替代重复手工操作的职场人与初学者从零基础语法讲起逐步过渡到Excel、Word、PPT、PDF、邮件、数据库、网络请求与系统文件管理等常见办公场景帮助读者建立可落地的自动化处理思路。资源包内共1个docx文档约1.84MB以章节化教程形式组织涵盖openpyxl读写与图表制作、python-docx文档排版、python-pptx演示文稿创建、PyPDF2文档处理、smtplib邮件收发、数据库增删改查及requests爬虫等内容每章配有习题与实操案例目录结构清晰便于按模块查阅和练习。目前已有1148人学习适合作为办公自动化入门到进阶的参考手册也可用于日常报表批量生成、文档格式统一等任务的思路借鉴。1. 从三件套到一条流水线Python 自动化办公的知识地图很多人学 Python 自动化办公是从「装个库、跑个 demo」开始的结果学完 openpyxl 会读单元格学完 python-docx 会加段落真到要批量处理一百份文件时还是手忙脚乱。问题不在库没学而在于脑子里没有一张地图。梳理下来会发现这个方向其实是一条很清晰的流水线数据从 Excel 进来经过清洗和计算落到 Word 或 PDF 里成为正式文档再往上叠 PPT 做汇报中间用文件系统、路径、批量循环把整条链路串起来。三个核心库 openpyxl、python-docx、python-pptx 分别对应表格、文档、演示三类载体而真正决定你能不能把活干完的是对「对象层次」和「批量思维」的理解。这份笔记适合已经会写基础 Python、正在系统学办公自动化或准备复习的人把散落的示例重新组织成可复用的结构。2. Excel 自动化openpyxl 的三层对象与读写主线Excel 是自动化办公里出现频率最高的载体也是整条流水线的入口。openpyxl 的设计思路非常规整它把 Excel 拆成 Workbook、Worksheet、Cell 三个层次你操作的每一步都落在这三层之一上。理解这三层比背一堆方法名重要得多。2.1 Workbook、Worksheet、Cell 三层对象怎么对应一个 Workbook 对象代表一个 Excel 文档是操作的起点。新建用openpyxl.Workbook()读取已有文件用openpyxl.load_workbook(filename)filename 是必传参数可以是路径也可以是文件对象。Worksheet 代表一张表Cell 代表一个单元格。获取顺序是固定的先有 Workbook再从它拿到 Worksheet最后从 Worksheet 拿到 Cell。这个顺序不能跳跳了就会拿到 None 或者报错。层次代表什么常用入口关键属性/方法Workbook整个 Excel 文档Workbook()/load_workbook()active、worksheets、sheetnames、create_sheet()、remove()、save()Worksheet一张工作表wb.active、wb[Sheet1]title、dimensions、max_row、max_column、iter_rows()、append()Cell一个单元格ws[A1]、ws.cell(row, column)row、column、value、coordinate这张表建议直接背下来。实际写代码时八成的时间都在wb、ws、cell三个变量之间来回。wb.active拿当前活跃表wb.sheetnames返回表名列表wb[表名]按名取表wb.create_sheet(名字)新建表wb.remove(ws对象)删表——这几个是高频操作注意remove的参数是 Worksheet 对象而不是表名字符串这是新手最容易写错的地方之一。2.2 读取整行整列、切片与 iter_rows 的取舍读取 Excel 的核心是「怎么高效拿到一片区域的数据」。openpyxl 提供了好几种方式各有适用场景混用容易出问题。按单元格读ws[A1].value拿单个值ws[A1].coordinate拿坐标.row和.column拿行列号。适合精确取某几个格子。按行或按列读ws[C]返回 C 列所有 Cell 对象ws[6]返回第 6 行所有 Cell 对象。注意这里返回的是 Cell 对象序列取值要再点.value。切片读ws[2:4]拿第 2 到第 4 行返回的是嵌套的 Cell 元组遍历时要两层循环。迭代器读ws.iter_rows(min_row, max_row, min_col, max_col)是最灵活的方式四个参数控制读取范围适合大表和需要精确控制边界的场景。import openpyxl wb openpyxl.load_workbook(excelTest.xlsx) ws wb.active # 方式一iter_rows 精确控制范围适合批量处理 for row in ws.iter_rows(min_row2, max_rowws.max_row, min_col1, max_col4): for cell in row: print(cell.value, end\t) print() # 方式二values 直接拿数据跳过 Cell 对象 for row in ws.values: print(row)iter_rows返回的是 Cell 对象能拿到坐标和样式ws.values直接返回值的元组写数据处理逻辑时更省事。选哪个取决于你要不要单元格的附加信息。大表读取时优先用迭代器别用ws[A]这种整列取法整列会把空单元格也拉进来内存和速度都吃亏。还有一个细节列字母和列数字的转换。openpyxl.utils里有get_column_letter和column_index_from_string做动态列处理时用得上别自己手写映射表。2.3 写入与样式append、cell 与公式、合并单元格写入有三条路ws.append(iterable)逐行追加ws.cell(row, column, value)定点写或者直接ws[A1] 值。批量生成表格数据用append最顺手它从当前最后一行往下写需要精确控制位置就用cell()。import openpyxl from openpyxl.styles import Font wb openpyxl.Workbook() ws wb.active ws.title 工资表 # 表头 ws.append([姓名, 基本工资, 加班时长, 合计]) # 逐行写入数据 data [[张三, 8000, 12], [李四, 9500, 8]] for row in data: ws.append(row) # 定点写公式合计 基本工资 加班时长 * 50 for r in range(2, ws.max_row 1): ws.cell(rowr, column4, valuefB{r}C{r}*50) # 样式字体加粗 ws[A1].font Font(boldTrue) wb.save(salary.xlsx)样式部分要记住字体用Font行高列宽用row_dimensions[行号].height和column_dimensions[列字母].width合并单元格用ws.merge_cells(A1:D1)拆分用unmerge_cells。公式写进去是字符串形式openpyxl 不会帮你计算打开 Excel 时才求值——这点在自动化校验时要特别注意别指望读回来就是算好的数。图表方面饼图、条形图、气泡图、散点图都能建基本套路是openpyxl.chart里选图表类设置数据引用Reference再ws.add_chart(chart, 位置)。图表属于「锦上添花」复习时知道套路即可不必死记每个参数。2.4 三个实操案例背后的通用套路教程里的工资条生成、加班时间统计、快速查重、身份证提取年月日表面是四个案例底层是同一套动作读入 → 遍历行 → 条件判断或字符串处理 → 写回或输出。工资条是「一行拆成多行加空行」加班统计是「按人聚合求和」查重是「用集合或字典记录已出现值」身份证提取是「字符串切片加日期计算」。把这四个套路抽象出来换成任何业务数据都能套。复习时不要背案例代码要能说出每个案例用了哪种遍历方式和哪种数据结构。3. Word 与 PDFpython-docx 的文档结构与格式控制Word 自动化解决的是「把数据变成正式文档」的问题典型场景是批量生成通知书、证明、报告。python-docx 的对象模型比 openpyxl 更贴近排版逻辑Document 是文档下面挂段落、表格、图片样式通过 run 和 paragraph 两级控制。3.1 Document、段落、run 与样式的层级关系创建文档用Document()保存用doc.save(路径)。添加内容的基本单位是段落doc.add_paragraph(文本)标题用doc.add_heading(标题, level1)列表和引用也是段落加样式。图片用doc.add_picture(路径, width...)表格用doc.add_table(rows, cols)。关键在样式控制。一个段落里的文字可以拆成多个 runrun 是格式的最小单位。设置字体、字号、加粗都是对 run 操作from docx import Document from docx.shared import Pt from docx.enum.text import WD_ALIGN_PARAGRAPH doc Document() p doc.add_paragraph() run p.add_run(这是一段加粗的正文) run.bold True run.font.size Pt(12) run.font.name 宋体 # 段落级对齐方式 p.alignment WD_ALIGN_PARAGRAPH.CENTER doc.save(demo.docx)这里最容易翻车的是中文字体。run.font.name只设置西文字体中文字体要额外设置run._element.rPr.rFonts.set(qn(w:eastAsia), 宋体)不设的话中文会回退到默认字体打印出来和预期不一致。这是血泪经验级别的细节教程示例里往往一笔带过。3.2 读取 Word、转 PDF 与 PDF 的合并拆分加密读取 Word 用Document(路径)然后遍历doc.paragraphs拿文本、遍历doc.tables拿表格。注意读取只能拿到文字内容复杂排版信息会丢失别指望读回来还能还原格式。Word 转 PDF 依赖外部转换能力python-docx 本身不做这件事实际项目里通常调用系统级的转换工具或第三方服务复习时知道「这不是 python-docx 的职责」就够了别在库文档里死找。PDF 操作是另一套库读取内容、合并、拆分、加密。合并是把多个 PDF 的页面依次追加到一个输出文件拆分是按页范围切出子文件加密是给输出加打开密码。这几个操作的共同点是「以页为单位搬运」理解页对象的概念API 就顺了。3.3 通知书与证明案例模板填充的思路生成违章罚单通知书、复工证明这类案例本质是「固定模板 变量替换」。做法有两种一是用 python-docx 从零拼段落适合结构简单的文档二是先做一个带占位符的模板 docx读取后遍历段落做字符串替换适合格式复杂的正式文书。第二种更实用因为排版在 Word 里调好代码只负责填数据。替换时要遍历paragraph.runs而不是paragraph.text直接改 text 会把 run 的格式冲掉这是另一个高频坑。4. PPT 自动化python-pptx 的幻灯片、占位符与图表PPT 自动化的价值在于「批量出汇报材料」数据变了几十页图表跟着更新不用手动一页页改。python-pptx 的结构是 Presentation → Slide → Shape 三层和前面两个库的思路一脉相承。4.1 Presentation、Slide、Shape 与占位符新建用Presentation()加幻灯片用prs.slides.add_slide(layout)layout 决定版式标题页、标题加内容、空白页等。每张幻灯片上的元素统称 Shape文本框、图片、表格、图表都是 Shape。添加标题和内容本质是往占位符里填字from pptx import Presentation from pptx.util import Inches, Pt prs Presentation() slide prs.slides.add_slide(prs.slide_layouts[1]) # 标题内容版式 slide.shapes.title.text 季度汇报 body slide.placeholders[1] body.text 第一项数据概览 # 指定位置添加文本框 txBox slide.shapes.add_textbox(Inches(1), Inches(4), Inches(4), Inches(1)) tf txBox.text_frame tf.text 备注信息 tf.paragraphs[0].font.size Pt(14) prs.save(report.pptx)slide_layouts的下标对应版式库用错版式会导致占位符数量不对取placeholders[1]时直接报索引错误。稳妥做法是先打印len(slide.placeholders)确认。位置和尺寸统一用Inches、Pt这类单位对象别直接传数字传数字是按 EMU 算的位置会离谱。4.2 流程图与四类图表条形、折线、饼状PPT 里的图表分两类一类是原生图表对象用slide.shapes.add_chart(图表类型, x, y, cx, cy, chart_data)创建数据来自CategoryChartData能保留可编辑性另一类是流程图用形状加连接线拼出来适合表达流程而非数值。条形图、折线图、饼状图、流程图的创建套路一致准备数据 → 选图表类 → 设置位置尺寸 → 加进幻灯片 → 调样式标题、图例、数据标签。复习时抓住「数据对象 图表对象 位置」三要素具体参数查文档即可。样式调整里chart.has_legend、chart.plots[0].has_data_labels这几个开关最常用。4.3 批量生成汇报材料的组合拳真正体现 PPT 自动化价值的是「Excel 数据 → PPT 图表」的联动用 openpyxl 读数据算好聚合结果再用 python-pptx 逐页生成图表页。这条链路把第 2 章和第 4 章串起来了也是整份教程里最接近真实办公场景的部分。写这类脚本时把「读数据」「算指标」「建页」「填图表」拆成四个函数任何一段出问题都能单独调试比写一个大脚本强得多。5. 易错点清单这几个坑复习时最容易漏这一章专门收那些「看示例觉得会了、自己写就报错」的地方。每条按「易漏点 → 为什么漏 → 怎么补」说清楚。易漏点一save 之前的所有修改都在内存里。为什么漏示例代码往往最后一行才 save读者容易以为每次赋值都落盘。怎么补养成「改完必 save」的习惯尤其是循环里多次修改同一个工作簿时中途 save 一次能避免程序崩溃后全部白干。另外load_workbook读进来的文件save 时如果同名会覆盖想保留原文件就换个输出名。易漏点二remove 的参数是对象不是表名。为什么漏create_sheet传的是字符串直觉上remove也该传字符串。怎么补记住wb.remove(wb[表名])这种写法或者先ws wb[表名]再wb.remove(ws)。传字符串会直接抛异常。易漏点三公式写进去不等于算好。为什么漏写B2C2后立刻读cell.value拿到的还是公式字符串。怎么补需要计算结果时要么用 Python 自己算好再写值要么借助能求值的工具打开文件重算。自动化校验场景下优先自己算。易漏点四中文字体要单独设 eastAsia。为什么漏font.name看起来设置了字体实际只对西文生效。怎么补按 3.1 里的写法补一行rFonts.set(qn(w:eastAsia), 宋体)或者封装成一个设置中文字体的工具函数全项目复用。易漏点五PPT 占位符下标依赖版式。为什么漏不同 layout 的占位符数量和顺序不同照抄示例的下标换个版式就错。怎么补写代码前先打印slide.placeholders的索引和类型确认后再取或者用slide.shapes.title这种按角色取的方式比按下标稳。6. 复习路线从三库主线到查漏补缺的清单复习这份内容别从头到尾重读示例按「主线 清单」走效率最高。主线就三条Excel 的 Workbook/Worksheet/Cell 三层对象与读写迭代Word 的 Document/段落/run 与样式控制PPT 的 Presentation/Slide/Shape 与图表生成。每条主线问自己三个问题对象怎么拿、数据怎么进出、样式怎么改。三个问题答得顺这个库就算过关。下面这张清单可以直接当自测表用每项能独立写出代码才算掌握模块必会操作自测标准Excel 读取load_workbook、active、iter_rows、values能读出指定区域的二维数据Excel 写入append、cell、公式、字体、行高列宽能生成带表头和样式的表Excel 进阶合并拆分单元格、图表、查重、字符串提取能独立完成一个统计案例Word 生成标题、段落、run 样式、图片、表格能生成一份带格式的通知书Word 读取paragraphs、tables 遍历能提取全文和表格数据PDF合并、拆分、加密、读文本能按页范围切分文件PPT版式、占位符、文本框、四类图表能批量生成图表页通用路径处理、批量循环、异常捕获能处理一个文件夹的全部文件查漏补缺的方法很具体拿一个真实的小需求比如「把某文件夹下所有 Excel 的第二列汇总成一张新表并生成一份 Word 说明」从零写一遍卡在哪就回哪一章补。写的过程中刻意用上try/except包住文件读写用pathlib处理路径用函数拆分步骤——这些工程习惯比多背几个 API 更能决定你能否把自动化脚本真正跑在生产环境里。我自己的习惯是每学完一个库就强制用「读一个文件、改一处内容、存一个新文件」的最小闭环走一遍不跑通不往下学。这个习惯帮我挡掉了大量「示例看得懂、自己写就崩」的情况。希望这份梳理能帮到你把散落的示例收成一张能随时调用的地图。本文还有配套的精品资源点击获取

相关推荐

Univer开源在线表格:架构原理、集成实践与性能优化指南
Univer开源在线表格:架构原理、集成实践与性能优化指南

最近选在线表格方案的人,八成绕不开Univer这个开源项目。从名字上你可能猜不到它要做什么:Univer,直译过来是“全宇宙”,但实际它是一个把电子表格、文档、幻灯片三种编辑器统一到一个底层架构上的开源办公套件。尤其“univer在线… · 2026/11/3 6:06:13

需求管理成熟度模型与六大黄金指标解析
需求管理成熟度模型与六大黄金指标解析

1. 为什么需求管理需要评估体系?在软件研发和产品管理领域,需求管理一直是个让人又爱又恨的话题。我见过太多团队,需求文档堆积如山,但真正落地的却寥寥无几;也见过不少产品经理,每天疲于应付各种需求变更&… · 2026/11/3 6:06:13

链表元素删除:LeetCode 203题解与多语言实现
链表元素删除:LeetCode 203题解与多语言实现

1. 链表基础与问题定义链表作为数据结构中的经典存在,与数组相比具有动态内存分配的优势。在解决"移除链表元素"问题前,我们需要明确几个关键概念:单链表由节点(Node)通过指针串联而成,每个节点包含:数据域(… · 2026/11/3 6:06:13

ROS 2核心组件解析:节点、话题、服务与TF2坐标系统
ROS 2核心组件解析:节点、话题、服务与TF2坐标系统

1. ROS 2核心概念概述在机器人开发领域,ROS 2(Robot Operating System 2)作为新一代机器人操作系统,其核心通信机制是构建复杂机器人系统的基石。节点(Node)、话题(Topic)、服务&… · 2026/11/3 6:40:47

MATLAB实现应变花主应力方向计算与验证
MATLAB实现应变花主应力方向计算与验证

1. 从一组应变片说起:为什么主应力方向值得单独写套代码手里捏着一组应变花读数,三个方向、三个微应变值,纸面上看就是三个数字,但真正要拿去判断结构受力状态时,这三个数字本身几乎没有任何直接意义。你需要把它们换算… · 2026/11/3 6:40:47

解决跨时区数据同步中的JDK时区数据库问题
解决跨时区数据同步中的JDK时区数据库问题

1. 项目背景与问题定位2026年3月14日,我在处理一个线上系统时遇到了一个奇怪的bug。这个bug没有明确的错误描述,只在日志中留下了"bug2026.03.14"的标记。经过初步排查,我发现这个问题与系统的时间处理逻辑有关,特别是在… · 2026/11/3 6:40:47

AutoDL平台部署LLaMA-Factory WebUI常见问题解决方案
AutoDL平台部署LLaMA-Factory WebUI常见问题解决方案

1. AutoDL平台运行LLaMA-Factory WebUI的典型问题全景在AutoDL云平台上部署LLaMA-Factory的WebUI时,开发者常会遇到三类典型问题:端口访问异常:表现为执行llamafactory-cli webui后生成的http://0.0.0.0:7860链接无法打开,这是Aut… · 2026/11/3 6:40:47

Buzz概念解析:从声音现象到数字传播热词
Buzz概念解析:从声音现象到数字传播热词

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"buzz",以及空的“相关热搜词”“最新网络热词”字段(内容为),无任何有效语义信息;缺失【项目正文】、【关键词】、【摘… · 2026/11/3 6:40:47

Hive列顺序调整:元数据错位风险与安全方案
Hive列顺序调整:元数据错位风险与安全方案

1. 一句 ALTER 之后的静默错位:问题到底出在哪Hive 里改列顺序这件事,最麻烦的地方在于它通常不会报错。你敲完ALTER TABLE ... REPLACE COLUMNS (...),控制台回一句OK,DESCRIBE出来的列顺序也确实变成了你想要的顺序,… · 2026/11/3 6:39:46

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码