ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python办公自动化实战:用openpyxl、python-docx、python-pptx批量处理Excel、Word和PPT

Python办公自动化实战:用openpyxl、python-docx、python-pptx批量处理Excel、Word和PPT 每天与 Excel 表格、Word 文档、PPT 演示稿打交道是很多岗位的常态。但真正让人疲惫的往往不是任务本身而是把同一套复制粘贴、查找替换、重复排版动作循环几十遍。如果你刚开始接触 Python那么Python 办公自动化很可能是投入产出比最高的一条练习路径它不需要复杂的算法也不用先啃厚厚的语法书只要理解文件结构、学会调用几个第三方库就能把大量日常工作压缩成“运行一个脚本”。这篇文章会从零开始带你完成一个覆盖 Word、Excel、PPT 三类文件的真实办公自动化小项目。整个过程会讲解三个核心库的用法也会把新手容易踩的坑单独列出来。阅读本文后你将掌握用openpyxl读取和写入 Excel 数据用python-docx批量生成 Word 文档用python-pptx批量生成 PPT 页面把三类文件串成一个完整业务场景实现一键产出。1. Python 办公自动化到底能解决什么问题1.1 办公自动化不只是“替换人工操作”很多人第一次接触办公自动化以为它只是用脚本代替鼠标点按钮。这个理解不够准确。办公自动化的核心并不是消灭“人”而是要把规则固定下来把可重复的过程变成可按参数调整的程序。举个例子行政同事每周要发一份通知内容是复制员工信息表里的姓名、部门、时间再替换到 Word 通知模板里。如果只有 10 个人手动复制并不算难但如果是 300 人的名单手动操作就容易漏行、复制错列甚至格式不一致。程序处理这类问题的优势在于只要输入数据格式稳定输出结果就能保持一致。从文件格式来看办公自动化的对象通常是 OOXML 体系下的三类文件.xlsxExcel 工作簿核心是单元格、工作表、工作簿的关系.docxWord 文档核心是段落、Run 文本块、表格.pptxPPT 演示文稿核心是幻灯片、形状、文本框。理解这三类文件的对象模型比死记 API 更重要。因为这些库本质上是在解析并重建 XML 结构当你知道了“文档是由哪些部分组成”自然就知道该调用什么方法。1.2 三个核心库各负责什么Python 库目标文件主要用途openpyxlxlsx读取、写入、修改 Excel 工作表python-docxdocx创建、编辑 Word 文档python-pptxpptx创建、编辑 PPT 演示文稿这三个库都是第三方库安装方式非常接近都是通过pip安装。后面的章节会逐步展开每一个库的使用。有的读者可能会有疑问Excel 文件有 xls 和 xlsx 两种格式Word 也有 doc 和 docxPPT 有 ppt 和 pptx两者有什么区别最直接的区别是xls、doc、ppt是老版本的二进制格式xlsx、docx、pptx是较新的 OOXML 格式本质上是一种 zip 压缩包本文涉及的三个库几乎都只支持新格式所以如果你拿到的是旧格式文件需要先通过 Office 软件另存为 xlsx、docx、pptx。1.3 本文的实战场景设计为了让例子更接近真实办公本文选取一个非常经典的行政部门周报场景有一份source_data.xlsx员工任务表里面有姓名、部门、本周核心事项、完成情况、下周计划需要为每位员工生成一份单独的 Word 周报需要同时生成一份部门周会用的 PPT把所有员工的周报摘要放在同一份演示文稿里。这个场景没有用到高深理论但覆盖了“Excel 读取数据 → Python 程序处理 → Word/PPT 输出文件”的完整链路。只要把这个流程跑通日后遇到报销单据汇总、工作通知批量发送、产品周报自动生成等需求都可以沿用同一套思路。在开始写脚本之前需要先安装 Python 环境并准备好第三方库。2. 环境准备与项目结构2.1 安装 Python 并验证本文的代码在 Python 3 环境下运行建议使用 Python 3.8 及以上版本。如果你还没有安装 Python可以去 Python 官网下载对应系统的安装包。安装时需要注意勾选Add Python to PATH否则在命令行中使用python命令时可能会提示找不到命令。安装完成后打开命令行工具Windows 下可用 PowerShell 或 CMD执行下面命令验证python --version如果输出类似Python 3.10.11说明 Python 环境正常。2.2 安装 openpyxl、python-docx、python-pptx打开命令行执行pip install openpyxl python-docx python-pptx这里不指定固定版本因为不同时期最新版本不同安装最新稳定版即可。如果你所在环境同时存在 Python 2 与 Python 3在 Windows 上可能需要把pip替换为pip3或者使用python -m pip install ...的方式安装。验证安装是否成功可以在命令行输入python -m pip show openpyxl如果能看到库的名称、版本和安装路径说明安装成功。2.3 准备项目目录建议先建立一个独立的项目文件夹避免把所有代码堆在桌面或下载目录中。office_auto/ ├── source_data.xlsx # 模拟员工任务表后面由脚本生成 ├── weekly_report.py # 主脚本 ├── output/ │ ├── word/ # 存放生成的 Word 周报 │ └── week_review.pptx # 存放生成的 PPT └── README.md # 可选项这样做的目的是让输入文件、输出文件、脚本代码分离。真实项目中输入文件可能来自同事发来的邮件输出目录建议单独区分防止程序和业务文件混在一起后误操作。下面开始进入正题先逐个学习三个库的基础用法。3. Excel 自动化使用 openpyxl 读写数据3.1 openpyxl 的核心对象在 openpyxl 中一个 xlsx 文件被称为Workbook工作簿。工作簿下可以有多个Worksheet工作表工作表中才是我们熟悉的单元格。三者关系是Workbook一个 xlsx 文件 └── Worksheet一张 Sheet例如 Sheet1 └── Cell一个单元格例如 A1打开现有 Excel 文件的基本写法是import openpyxl # 加载工作簿 wb openpyxl.load_workbook(source_data.xlsx) # 获取当前活动的工作表 ws wb.active如果你需要指定某一张 Sheet可以写成ws wb[员工任务表]读取单元格时最直接的方式是用类似坐标的写法# 读取 A1 单元格 print(ws[A1].value) # 或者使用 row/column 数字方式 print(ws.cell(row1, column1).value)对于新手来说我建议先记住ws[A1].value因为它在理解上更方便和 Excel 里看到的位置完全一致。在 openpyxl 中行号和列号都是从 1 开始计数的这一点和大多数 Python 习惯从 0 开始计数的方式不同需要格外注意。3.2 读取 Excel 数据一个简单示例假设你已经有一份考勤汇总.xlsx第一行是标题从第二行开始是数据。用下面的代码可以遍历全部行import openpyxl wb openpyxl.load_workbook(考勤汇总.xlsx, data_onlyTrue) ws wb.active # iter_rows 表示按行遍历min_row2 表示从第二行开始 # values_onlyTrue 表示只取单元格的值不返回单元格对象 for row in ws.iter_rows(min_row2, values_onlyTrue): name row[0] department row[1] work_days row[2] print(name, department, work_days)这里有一个非常关键的参数data_onlyTrue。它表示读取公式计算结果而不是公式本身。如果一个单元格中的内容是类似A2*0.8的公式当data_onlyFalse默认值时读取出来的是公式字符串A2*0.8当data_onlyTrue时读取的是 Excel 中缓存的计算结果。不过需要注意如果这个 Excel 文件从没有用 Excel 或 WPS 打开并保存过公式缓存可能不存在此时读取到的会是None。3.3 向 Excel 写入数据并保存使用 openpyxl 创建一个新的 xlsx 文件很简单from openpyxl import Workbook # 创建工作簿 wb Workbook() ws wb.active # 设置 sheet 名称 ws.title 员工任务表 # 添加标题行 ws.append([姓名, 部门, 本周核心任务, 完成情况]) # 添加数据行 ws.append([张薇, 运营组, 完成公众号活动方案初稿, 已完成]) ws.append([韩磊, 技术组, 封装周报生成函数, 进行中]) # 保存文件 wb.save(source_data.xlsx)ws.append()是按行追加数据传入的是一个列表列表中的每个元素对应一个单元格。这段代码最大的价值在于你可以用脚本构造模拟数据方便练习后续的 Word 和 PPT 生成。很多教程一上来就要求读者手动准备一份复杂的 Excel这其实会降低实践耐心。用代码生成一个可控的小规模 Excel 文件反而更容易验证后续逻辑。3.4 简单单元格样式调整openpyxl 也可以调整字体、背景色、对齐方式、行高列宽。下面这段代码演示了最常用的几种设置from openpyxl import Workbook from openpyxl.styles import Font, PatternFill, Alignment from openpyxl.utils import get_column_letter wb Workbook() ws
返回列表