当前位置:

首页 > 编程开发 > Python使用openpyxl操作Excel的新手入门教程

Python使用openpyxl操作Excel的新手入门教程

openpyxl是Python操作Excel的轻量库,支持读写.xlsx文件,不依赖Excel程序。通过load_workbook加载工作簿,可用坐标或行列法获取单元格,iter_rows()遍历区域,修改后需save保存。支持append批量插入数据,可合并多个Excel文件,实现办公自动化。

openpyxl 简介

为什么选择 openpyxl?

Python里能操作Excel的库其实不少,但要说最趁手的,openpyxl绝对算一个。来看一下市面上常见的几个选择:

库名特点适用场景
openpyxl功能强大,支持读写 .xlsx 格式日常办公自动化
xlrd/xlwt老牌库,只能读/写 .xls旧版 Excel 文件
pandas数据分析神器,可读写 Excel大数据处理
xlwings调用 Excel 程序,保留公式需要复杂公式计算

综合来看,对于大多数场景,openpyxl 是最佳选择——既能读写,又不依赖Excel程序,轻量高效。

安装 openpyxl

pip install openpyxl

安装成功后,你会看到 Successfully installed openpyxl 的提示,直接开干就行。

Excel 核心概念

在动手操作之前,先理清几个关键概念:

工作簿 (Workbook) - 一个 Excel 文件就是一个工作簿

工作表 (Sheet) - 工作簿里的表格页面

  • 行 (Row) - 横向,用数字 1, 2, 3... 表示
  • 列 (Column) - 纵向,用字母 A, B, C... 表示
  • 单元格 (Cell) - 行和列的交叉点
  • 坐标 (Coordinate) - 比如 B4 表示第2列第4行

重要提醒:

  • Excel 的索引从 1 开始(不是从 0 开始!)
  • 列用字母表示:A, B, C... Z, AA, AB...
  • 行用数字表示:1, 2, 3...
  • 单元格坐标格式:列字母 + 行数字,如 B4

Python使用openpyxl操作Excel的新手入门教程

如图中【后羿】所在的位置是 B4,表示第 B 列第 4 行。

打开 Excel 文件

支持的文件格式:.xlsx / .xlsm / .xltx / .xltm

注意:.xls 格式(旧版 Excel)需要先转换为 .xlsx 才能使用 openpyxl

示例文件:王者小学.xlsx,包含两个工作表:

Python使用openpyxl操作Excel的新手入门教程

代码示例:

from openpyxl import load_workbook

# 文件路径(r 前缀表示原始字符串,避免转义问题)
filePath = r'D:王者小学.xlsx'

# 打开 Excel 文件
workbook = load_workbook(filePath)

# 查看所有工作表名称
print(workbook.sheetnames)

Python使用openpyxl操作Excel的新手入门教程

运行结果:

['花名册', '成绩单']

关键函数:load_workbook(filepath)

  • 作用:加载已存在的 Excel 文件
  • 参数:文件路径(字符串)
  • 返回:Workbook 对象
  • 注意:只能打开已存在的文件,不能创建新文件

获取 Excel 数据

获取工作表(Sheet)

一个 Excel 文件里可以有好几个工作表,获取工作表有三种常用方法:

方法语法说明
通过名称workbook['表名']最常用,直观明了
通过索引workbook.worksheets[索引]索引从 0 开始
获取活动表workbook.active获取当前打开时显示的表

代码示例:

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)

# 方法1:通过表名获取
sheet1 = workbook["花名册"]

# 方法2:通过索引获取(从0开始)
sheet2 = workbook.worksheets[0]  # 第一个表

# 方法3:获取当前活动表
sheet3 = workbook.active

print(f"方法1: {sheet1}")
print(f"方法2: {sheet2}")
print(f"方法3: {sheet3}")

运行结果:

方法1:

方法2:

方法3:

提示:

  • workbook["花名册"] 和 workbook.worksheets[0] 获取的是同一个表
  • workbook.active 获取的是 Excel 打开时默认显示的表

获取表格尺寸

使用 sheet.dimensions 可以快速知道表格的数据范围:

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)

sheet1 = workbook["花名册"]
sheet2 = workbook["成绩单"]

print(f"花名册: {sheet1.dimensions}")
print(f"成绩单: {sheet2.dimensions}")

运行结果:

花名册: A1:C5

成绩单: A1:D5

含义解析:

  • A1:C5 = 从 A1 单元格到 C5 单元格的数据区域
  • A1:D5 = 从 A1 单元格到 D5 单元格的数据区域

Python使用openpyxl操作Excel的新手入门教程

Python使用openpyxl操作Excel的新手入门教程

Python使用openpyxl操作Excel的新手入门教程

尺寸格式:左上角坐标:右下角坐标

比如 A1:C5 表示 A 列到 C 列,第 1 行到第 5 行的区域。

获取单元格数据

获取单元格数据有两种常用方法:

方法语法适用场景
坐标法sheet['B2']知道单元格坐标时
行列法sheet.cell(row=2, column=2)需要循环遍历时

代码示例:

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)

sheet = workbook["花名册"]
sheet2 = workbook["成绩单"]

# 方法1:通过坐标获取
cell1 = sheet["B2"]
print(f"单元格对象: {cell1}")
print(f"单元格值: {cell1.value}")

# 方法2:通过行列获取(B2 = 第2行第2列)
cell2 = sheet.cell(row=2, column=2)
print(f"单元格值: {cell2.value}")

# 获取后羿的成绩(C4 = 第4行第3列)
score = sheet2.cell(row=4, column=3).value
print(f"后羿的成绩: {score}")

Python使用openpyxl操作Excel的新手入门教程

Python使用openpyxl操作Excel的新手入门教程

运行结果:

单元格对象:

单元格值: 李白

单元格值: 李白

后羿的成绩: 96

总结:

  • sheet['B2'] → 获取单元格对象
  • sheet['B2'].value → 获取单元格的值
  • sheet.cell(row=2, column=2) → 通过行列获取(行、列从1开始)

获取区域数据

方法1:使用sheet[](切片语法)

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)
sheet = workbook["花名册"]

# 获取矩形区域
cells = sheet["A1:C4"]  # 从A1到C4的区域

for row in cells:       # 按行遍历
    for cell in row:    # 遍历行中的每个单元格
        print(cell.value)

运行结果:

学号

姓名

性别

李白

男

...

常用切片方式:

语法说明示例
sheet['A1:C4']获取矩形区域A1到C4的所有单元格
sheet['A']获取整列A列所有数据
sheet['4']获取整行第4行所有数据
sheet['A:C']获取多列A到C列
sheet[2:4]获取多行第2到4行

方法2:使用sheet.iter_rows()(推荐)

iter_rows() 是更灵活的方法,直接用行列数字指定范围:

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)
sheet = workbook["花名册"]

# 获取指定范围(第2-4行,第1-2列)
for row in sheet.iter_rows(min_row=2, max_row=4, min_col=1, max_col=2):
    for cell in row:
        print(cell.value)

# 获取所有数据
for row in sheet.iter_rows():
    for cell in row:
        print(cell.value)

# 直接获取值(不需要 .value)
for row in sheet.iter_rows(min_row=2, max_row=4, values_only=True):
    print(row)  # 直接是元组 ('1', '李白', '男')

参数说明:

参数说明默认值
min_row起始行1
max_row结束行最大行
min_col起始列1
max_col结束列最大列
values_only是否只返回值False

推荐:需要按行列遍历时,使用 iter_rows() 更直观,尤其配合 values_only=True 可以直接拿到数据元组。

修改和保存 Excel

修改单元格的值

修改单元格有两种方式:

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)
sheet = workbook['花名册']

# 方式1:直接赋值
sheet["B2"] = '张三'

# 方式2:通过 cell 对象赋值
cell = sheet["B3"]
cell.value = '李四'

# 保存文件
workbook.sa ve(r'D:王者小学2.xlsx')

Python使用openpyxl操作Excel的新手入门教程

对比效果:

Python使用openpyxl操作Excel的新手入门教程

Python使用openpyxl操作Excel的新手入门教程

重要提醒:

  1. 必须保存:修改后调用 workbook.sa ve(路径) 才能生效
  2. 另存为:如果路径不同,会创建新文件;路径相同则覆盖原文件
  3. 文件关闭:保存前确保 Excel 文件已关闭,否则会报错

批量插入数据

使用 append() 方法可以在表格末尾批量插入数据:

from openpyxl import load_workbook

filePath = r'D:王者小学.xlsx'
workbook = load_workbook(filePath)
sheet = workbook['花名册']

# 要插入的数据(列表的列表)
data = [
    ['5', '安琪拉', "女"],
    ['6', '荆轲', "女"],
    ['7', '夏侯惇', "男"],
]

# 逐行追加
for row in data:
    sheet.append(row)

workbook.sa ve(filePath)
print("数据插入成功!")

Python使用openpyxl操作Excel的新手入门教程

应用场景:

  • 爬虫数据存储
  • 批量导入数据
  • 日志记录
  • 报表生成

实战项目:合并多个 Excel 文件

项目背景

假设你是公司的数据分析师,需要将2021年4个季度的销售数据合并成一个总表。每个季度的数据保存在单独的 Excel 文件中:

Python使用openpyxl操作Excel的新手入门教程

实现思路

  1. 遍历数据文件夹中的所有 Excel 文件
  2. 读取每个文件的数据
  3. 提取季度信息(从文件名获取)
  4. 将所有数据合并到一个新的工作簿
  5. 保存汇总文件

核心代码

import os
from openpyxl import load_workbook, Workbook

# 数据文件夹路径
data_dir = r'D:2021年销售明细'

# 创建新的工作簿保存汇总数据
summary_wb = Workbook()
summary_sheet = summary_wb.active
summary_sheet.title = "2021年销售汇总"

# 写入表头
headers = ['季度', '产品', '销量', '销售额']
summary_sheet.append(headers)

# 遍历所有Excel文件
for filename in os.listdir(data_dir):
    if filename.endswith('.xlsx'):
        # 提取季度信息
        quarter = filename.replace('.xlsx', '')
        
        # 打开文件读取数据
        file_path = os.path.join(data_dir, filename)
        wb = load_workbook(file_path)
        sheet = wb.active
        
        # 读取数据(跳过表头)
        for row in sheet.iter_rows(min_row=2, values_only=True):
            # 添加季度信息
            row_data = [quarter] + list(row)
            summary_sheet.append(row_data)
        
        wb.close()

# 保存汇总文件
summary_wb.sa ve(r'D:2021年销售汇总.xlsx')
print("数据合并完成!")

至此,你已经掌握了 Python 操作 Excel 的核心技能!

文档总结

一、核心知识点回顾

1. Excel 基础概念

工作簿 (Workbook) → 一个 Excel 文件

└── 工作表 (Sheet)

├── 行 (Row) - 数字 1, 2, 3...

├── 列 (Column) - 字母 A, B, C...

└── 单元格 (Cell) - 坐标如 B4

重要:Excel 索引从 1 开始,不是 0!

2. openpyxl 核心操作

操作代码说明
打开文件load_workbook('文件.xlsx')加载已存在的文件
获取工作表wb['表名'] / wb.worksheets[0]获取指定工作表
获取单元格sheet['B2'] / sheet.cell(row=2, column=2)两种获取方式
获取值cell.value获取单元格的值
修改值sheet['B2'] = '新值'直接赋值修改
批量插入sheet.append([数据列表])在末尾添加一行
保存文件wb.sa ve('路径.xlsx')保存修改

3. 区域数据获取方法对比

方法优点缺点
sheet['A1:C4']直观,用坐标需要转换行列到坐标
sheet.iter_rows()直接用行列数字稍微复杂一点

推荐:简单场景用 sheet[],复杂遍历用 iter_rows()

4. 完整操作流程

from openpyxl import load_workbook

# 1. 打开文件
wb = load_workbook('数据.xlsx')

# 2. 获取工作表
sheet = wb['Sheet1']

# 3. 读取/修改数据
value = sheet['A1'].value
sheet['B2'] = '新数据'

# 4. 批量插入
sheet.append(['数据1', '数据2', '数据3'])

# 5. 保存文件
wb.sa ve('数据.xlsx')

二、常见应用场景

  1. 数据整理:批量处理多个 Excel 文件
  2. 报表生成:自动从数据库导出数据到 Excel
  3. 数据清洗:读取 Excel 数据,处理后保存
  4. 爬虫存储:将爬取的数据保存到 Excel
  5. 办公自动化:自动填充模板、生成报告

三、学习建议

  1. 多练习:Excel 操作熟能生巧,多写代码
  2. 注意索引:时刻记住 Excel 从 1 开始计数
  3. 及时保存:修改后记得调用 sa ve()
  4. 关闭文件:操作前确保 Excel 文件已关闭
  5. 结合 pandas:大数据量时考虑使用 pandas
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Python
相关文章 更多
大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

langgraph python guide中文入门教程详解
langgraph python guide中文入门教程详解

本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

Windows 安装 Python:从官方入口到虚拟环境的可复现实践
Windows 安装 Python:从官方入口到虚拟环境的可复现实践

面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

Windows系统Python安装教程:下载、勾选PATH及环境变量配置
Windows系统Python安装教程:下载、勾选PATH及环境变量配置

针对Windows初学者的Python安装实战指南。详细讲解如何从Python官网下载匹配架构的安装包,重点演示安装首屏勾选“Add python.exe to PATH”的关键操作,并提供使用python --version和py命令验证环境变量的具体步骤,帮助新手快速搭建开发环境并排查路径问题。

Python安装后怎么打开:使用IDLE或命令行启动解释器
Python安装后怎么打开:使用IDLE或命令行启动解释器

刚在Windows安装好Python却不知道如何启动?本文详细演示如何通过开始菜单找到并打开IDLE集成开发环境,以及如何在PowerShell或命令提示符中使用python和py命令启动交互式解释器、运行.py脚本文件。包含退出解释器的方法及常见启动问题排查,帮助初学者快速验证安装成功并开始编写代码。

了解Python编程领域中最好的就业行业
了解Python编程领域中最好的就业行业

了解Python编程领域中最好的就业行业导语:近年来,Python作为一种易学易用的编程语言,越来越受到企业和开发者的青睐。在Python编程领域中,有许多就业机会,涵盖了各个行业。本文将介绍一些Python编程领域中最好的就业行业,并提供相应的代码示例。数据科学和机器学习数据科学和机器学习是Python编程领域中最热门的行业之一。Python在数据科学和机

python处理csv文件的方法完整实用教程
python处理csv文件的方法完整实用教程

针对Python处理CSV文件时常见的编码报错、内存溢出和数据类型错误,本文对比标准库csv与Pandas库的适用场景,提供可复制的代码示例和因果排查思路,帮助开发者选择最优处理方案。

python字典怎么按值排序用sorted函数实现升降序
python字典怎么按值排序用sorted函数实现升降序

本文介绍如何使用Python的sorted函数对字典按值进行升序和降序排序,结合具体代码示例和应用场景,帮助读者理解排序逻辑及其在数据处理中的实际价值。

python正则匹配修改方法与代码实现教程
python正则匹配修改方法与代码实现教程

深入讲解Python中使用re.sub进行正则匹配与替换的技巧,涵盖基础语法、分组引用及回调函数应用,帮助开发者解决复杂字符串修改需求,提升代码效率与可维护性。

selenium中文安装包下载与安装教程
selenium中文安装包下载与安装教程

详解Selenium在Python环境下的安装步骤,包括使用pip安装库文件、下载对应版本的浏览器驱动以及验证安装是否成功,适合自动化测试初学者参考。

查看更多
精品专题 更多
装机必备
装机必备

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

Windows
Windows

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

PDF教程
PDF教程

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

Mac软件 更多
Polarr macOS版
Polarr macOS版
macOS

Polarr 是适用于 macOS 的照片编辑与滤镜调色工具,提供全局参数调整、AI 主体识别、局部蒙版、人像修饰、叠加效果、预设制作和批量导出等功能,既适合快速美化日常照片,也能满足摄影用户的精细后期需求。

Portraiture macOS版
Portraiture macOS版
macOS

Portraiture macOS版是一款面向摄影师和修图人员的人像润饰插件,可在Photoshop、Lightroom Classic及Affinity工作流程中智能识别皮肤区域,完成自然磨皮、AI蒙版、肤色统一与阴影补光,

RealFlow macOS版
RealFlow macOS版
macOS

RealFlow macOS版是一款面向影视、动画和三维视觉制作的流体动力学与多物理场模拟工具,可制作液体、海浪、泡沫、颗粒、黏性材料及刚柔体交互效果,并通过连接插件衔接常用三维制作平台。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

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

PhpStorm Windows版
PhpStorm Windows版
Windows

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

PyCharm Windows版
PyCharm Windows版
Windows

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