文章标签#Python #openpyxl #Excel #办公自动化 #数据处理 本章学习目标本章聚焦 Python 办公自动化核心技能帮助读者从零到一完全掌握openpyxl模块的创建、读取、修改、样式、图表、批量处理等全套能力。通过本章学习你将独立完成企业级 Excel 自动化任务告别手动制表、数据录入、格式调整。一、引言为什么 openpyxl 是职场必备神器在日常办公、数据分析、报表导出、财务统计、数据汇总等场景中Excel 处理是最高频的刚需。手动复制粘贴、改格式、算数据不仅效率极低还极易出错。openpyxl 让 Python 直接操控 Excel把几小时工作压缩到几秒完成。1.1 背景与意义 核心认知openpyxl 是目前 Python 生态最主流、最稳定、功能最完整的 Excel 处理库专门支持.xlsx格式Excel 2007 及以上。它可以实现读写单元格、合并单元格、设置字体颜色、边框底纹、公式计算、批量插入数据、生成图表、读取大量数据等几乎所有 Excel 常用功能。据行业统计80% 以上的 Python 数据处理与办公自动化项目依赖 openpyxl是职场提效、自动化办公的核心利器。1.2 本章结构概览为帮助你系统性掌握 openpyxl本章严格按以下路线学习plaintext 环境安装 → 核心概念 → 写入操作 → 读取操作 → 样式设置 → 公式图表 → 批量实战 → 最佳实践 → 常见问题 → 总结展望二、核心概念解析2.1 基本定义概念一openpyxl 核心能力清单表格能力说明典型应用场景创建工作簿新建空白 xlsx 文件自动日报、周报、报表写入数据单元格、行、列批量写入数据导出、结果统计读取数据按行 / 按列 / 按区域读取数据采集、解析上报样式美化字体、颜色、边框、对齐统一报表格式公式计算直接写 Excel 公式自动计算财务报表、合计统计图表生成柱状图、折线图、饼图数据可视化报告批量处理循环生成、批量修改自动化业务系统概念二Excel 文档结构openpyxl 视角Workbook工作簿整个 Excel 文件Worksheet工作表文件内的 Sheet 页Cell单元格最小数据单元如 A1、B2Row/Column行与列Range单元格区域如 A1:C102.2 关键术语解释⚠️ 注意以下术语是看懂 openpyxl 代码的基础必须掌握。wbWorkbook代表整个 Excel 文件对象wsWorksheet代表当前操作的工作表cell单元格由行号列号定位offset单元格偏移用于相对定位freeze panes冻结窗格方便查看表头2.3 技术架构概览 架构理解plaintext┌─────────────────────────────────────────┐ │ 工作簿 Workbook │ │ openpyxl.Workbook() │ ├─────────────────────────────────────────┤ │ 工作表 Worksheet │ │ wb.active / wb[Sheet1] │ ├─────────────────────────────────────────┤ │ 单元格 Cell │ │ ws[A1]、ws.cell() │ ├─────────────────────────────────────────┤ │ 样式与格式 │ │ 字体、边框、颜色、对齐、公式 │ └─────────────────────────────────────────┘三、环境安装与快速入门3.1 安装 openpyxlbash运行# 安装稳定版 pip install openpyxl # 验证安装 pip show openpyxl3.2 第一个程序创建 Excel 并写入数据python运行# 导入工作簿类 from openpyxl import Workbook # 1. 创建工作簿对象 wb Workbook() # 2. 获取默认工作表 ws wb.active # 3. 修改工作表名称 ws.title 第一个工作表 # 4. 写入单元格数据 ws[A1] 姓名 ws[B1] 年龄 ws[C1] 城市 ws[A2] 张三 ws[B2] 22 ws[C2] 北京 # 5. 保存文件 wb.save(my_first_excel.xlsx) print(✅ Excel创建成功)四、写入操作从零构建 Excel4.1 单元格写入python运行from openpyxl import Workbook wb Workbook() ws wb.active ws.title 单元格写入 # 方式1直接赋值 ws[A1] 直接赋值写入 # 方式2使用cell函数行列 ws.cell(row2, column1, valuecell函数写入) # 方式3批量写入一行 row_data [小明, 25, 上海, 工程师] ws.append(row_data) wb.save(单元格写入.xlsx)4.2 批量插入多行数据python运行from openpyxl import Workbook wb Workbook() ws wb.active ws.title 批量数据 # 表头 header [ID, 姓名, 成绩, 等级] ws.append(header) # 模拟数据 data [ (1, 张三, 92, 优秀), (2, 李四, 85, 良好), (3, 王五, 76, 合格), (4, 赵六, 62, 合格), ] # 批量追加 for item in data: ws.append(item) wb.save(批量插入.xlsx)4.3 合并单元格python运行from openpyxl import Workbook wb Workbook() ws wb.active # 合并 A1 到 C1 ws.merge_cells(A1:C1) ws[A1] 合并单元格标题 # 合并多行多列 ws.merge_cells(A3:C5) ws[A3] 大区域合并 wb.save(合并单元格.xlsx)五、读取操作提取 Excel 数据5.1 读取指定单元格python运行from openpyxl import load_workbook # 加载已存在的Excel wb load_workbook(批量插入.xlsx) ws wb.active # 读取方式1 print(ws[A2].value) # 读取方式2 print(ws.cell(row2, column2).value)5.2 按行读取所有数据python运行from openpyxl import load_workbook wb load_workbook(批量插入.xlsx) ws wb.active # 遍历所有行 for row in ws.iter_rows(min_row1, max_rowws.max_row, values_onlyTrue): print(row)5.3 获取最大行 / 最大列python运行from openpyxl import load_workbook wb load_workbook(批量插入.xlsx) ws wb.active print(最大行数, ws.max_row) print(最大列数, ws.max_column)六、样式设置企业级报表美化6.1 字体样式python运行from openpyxl import Workbook from openpyxl.styles import Font wb Workbook() ws wb.active # 设置字体微软雅黑、14号、加粗、蓝色 font Font( name微软雅黑, size14, boldTrue, colorFF0000FF ) ws[A1] 报表标题 ws[A1].font font wb.save(字体样式.xlsx)6.2 对齐方式python运行from openpyxl.styles import Alignment from openpyxl import Workbook wb Workbook() ws wb.active # 水平居中 垂直居中 align Alignment(horizontalcenter, verticalcenter) ws[A1] 居中对齐 ws[A1].alignment align wb.save(对齐样式.xlsx)6.3 边框设置python运行from openpyxl.styles import Border, Side from openpyxl import Workbook wb Workbook() ws wb.active # 边框样式 side Side(stylethin, color000000) border Border(leftside, rightside, topside, bottomside) ws[A1] 带边框单元格 ws[A1].border border wb.save(边框样式.xlsx)6.4 背景色填充python运行from openpyxl.styles import PatternFill from openpyxl import Workbook wb Workbook() ws wb.active # 黄色背景 fill PatternFill(start_colorFFFF00, end_colorFFFF00, fill_typesolid) ws[A1] 高亮单元格 ws[A1].fill fill wb.save(背景填充.xlsx)七、公式与图表7.1 Excel 公式计算python运行from openpyxl import Workbook wb Workbook() ws wb.active ws[A1] 10 ws[A2] 20 ws[A3] 30 # 求和公式 ws[A4] SUM(A1:A3) # 平均值 ws[A5] AVERAGE(A1:A3) wb.save(公式计算.xlsx)7.2 生成柱状图python运行from openpyxl import Workbook from openpyxl.chart import BarChart, Reference wb Workbook() ws wb.active # 写入数据 data [ [姓名, 成绩], [张三, 92], [李四, 85], [王五, 76], ] for row in data: ws.append(row) # 创建图表 chart BarChart() data_ref Reference(ws, min_col2, min_row1, max_row4) labels_ref Reference(ws, min_col1, min_row2, max_row4) chart.add_data(data_ref, titles_from_dataTrue) chart.set_categories(labels_ref) ws.add_chart(chart, E1) wb.save(图表.xlsx)八、批量自动化实战8.1 批量生成 10 份成绩表python运行from openpyxl import Workbook import os # 确保输出目录存在 if not os.path.exists(./output): os.mkdir(./output) # 学生名单 students [张三, 李四, 王五, 赵六, 钱七] for name in students: wb Workbook() ws wb.active ws.title name ws[A1] f{name} 个人成绩单 ws[A2] 科目 ws[B2] 分数 ws[A3] 语文 ws[A4] 数学 ws[A5] 英语 wb.save(f./output/{name}_成绩表.xlsx) print(✅ 批量生成完成)8.2 批量读取汇总 Excelpython运行from openpyxl import load_workbook import os # 汇总表 wb_total Workbook() ws_total wb_total.active ws_total.title 汇总表 ws_total.append([姓名, 语文, 数学, 英语]) # 遍历文件夹 for filename in os.listdir(./output): if filename.endswith(.xlsx): wb load_workbook(f./output/{filename}) ws wb.active name filename.split(_)[0] yw ws[B3].value sx ws[B4].value yy ws[B5].value ws_total.append([name, yw, sx, yy]) wb_total.save(汇总结果.xlsx)九、最佳实践分享最佳实践一先结构后数据先写表头再批量写数据统一样式后再应用避免重复设置最佳实践二路径规范使用相对路径或绝对路径大批量操作先判断文件是否存在最佳实践三性能优化大数据量使用values_onlyTrue读取批量写入用append而非循环赋值操作完成及时保存最佳实践四格式规范数字保持数值类型日期使用标准格式公式避免手动计算十、常见问题解答Q1openpyxl 不支持 .xls 格式A不支持。只支持.xlsx。可另存为 xlsx 再处理。Q2保存报错权限被拒绝A关闭已打开的 Excel 文件再运行。Q3打开 Excel 显示 “已损坏”A不要手动中断程序确保wb.save()正常执行。Q4样式不生效A必须对单元格设置样式而非整行整列。Q5读取不到数据A确认load_workbook加载的是正确文件。十一、未来发展趋势AI Excel 自动化AI 自动生成报表、分析数据云端自动化对接钉钉 / 飞书 / 企业微信自动发送大数据处理配合 pandas 高效处理百万行数据低代码平台可视化配置一键生成 Excel十二、本章小结12.1 核心要点回顾✅ 本章完整覆盖安装与快速入门单元格、行、列批量写入按行、按列、按区域读取字体、边框、对齐、颜色等样式Excel 公式与图表生成批量创建、批量读取、批量汇总实战最佳实践与高频问题解决12.2 学习建议先跑通示例代码再修改参数练习结合自己工作做实战报表、统计表、台账大数据量配合 pandas 使用更高效样式复杂先做模板再用 Python 填充十三、课后练习基础练习创建带表头、3 行数据、边框居中的 Excel进阶练习读取任意 Excel 并输出所有内容实战练习批量生成 20 份带格式的员工信息表十四、参考资料openpyxl 官方文档https://openpyxl.readthedocs.ioPython 官方文档https://docs.python.orgOffice Open XML 规范https://learn.microsoft.com 本文全套代码100% 可直接复制到 CSDN 运行注释超详细零基础也能轻松吃透 openpyxl专注分享 Python 办公自动化、数据分析、爬虫实战、模块精讲等硬核干货全程落地、拒绝水文点赞 收藏 关注下期带来更多能直接提升职场效率的 Python 神器让你用代码解放双手少加班、多赚钱