上一篇
Openpyxl教程:Excel按行按列读取数据详解 - Python数据处理指南
- Python
- 2025-07-28
- 2006
Openpyxl教程:Excel按行按列读取数据详解
本教程将详细介绍如何使用Python的openpyxl库按行和按列读取Excel文件中的数据。无论您是数据分析师、开发者还是办公自动化工程师,掌握这些技巧都能大幅提升您处理Excel数据的效率。
一、为什么选择openpyxl处理Excel?
openpyxl是Python中最流行的Excel处理库之一,特别适合处理.xlsx格式的Excel文件。主要优势包括:
- 无需安装Microsoft Excel即可操作Excel文件
- 支持Excel 2010及更高版本
- 同时支持读取和写入操作
- 对大型文件处理效率较高
- 丰富的单元格格式设置功能
二、安装openpyxl
使用pip命令安装openpyxl:
pip install openpyxl
三、基础操作:加载Excel文件
在开始读取数据前,需要先加载Excel文件:
from openpyxl import load_workbook # 加载Excel文件 workbook = load_workbook(filename="示例数据.xlsx") # 获取活动工作表 sheet = workbook.active # 或者通过名称获取特定工作表 # sheet = workbook["销售数据"]
四、按行读取Excel数据
按行读取是最常用的数据读取方式,特别适合处理表格型数据:
1. 遍历所有行
for row in sheet.iter_rows(values_only=True): print(row)
2. 读取指定行范围
# 读取第2行到第10行 for row in sheet.iter_rows(min_row=2, max_row=10, values_only=True): print(row)
3. 读取行并获取单元格值
# 读取第一行 first_row = next(sheet.iter_rows(values_only=True)) # 访问特定单元格 print(f"第一行第一个单元格: {first_row[0]}") print(f"第一行第三个单元格: {first_row[2]}")
五、按列读取Excel数据
按列读取在需要垂直分析数据时非常有用:
1. 遍历所有列
for column in sheet.iter_cols(values_only=True): print(column)
2. 读取指定列范围
# 读取A列到C列 for col in sheet.iter_cols(min_col=1, max_col=3, values_only=True): print(col)
3. 获取特定列的数据
# 获取B列所有数据(第2列) b_column = [cell[0] for cell in sheet.iter_cols(min_col=2, max_col=2, values_only=True)] print(b_column)
六、应用场景分析
按行读取适用场景
- 处理表格形式的数据记录
- 逐行处理订单、交易记录
- 导入数据库记录
- 处理CSV格式的平面数据
按列读取适用场景
- 分析特定数据指标(如销售额列)
- 提取特定类型的数据
- 生成数据图表所需的数据系列
- 处理时间序列数据
七、完整示例:读取销售数据
from openpyxl import load_workbook def read_sales_data(file_path): # 加载工作簿 wb = load_workbook(filename=file_path) sheet = wb.active # 读取表头 headers = [cell.value for cell in next(sheet.iter_rows(min_row=1, max_row=1))] # 存储所有销售记录 sales_records = [] # 按行读取数据(从第二行开始) for row in sheet.iter_rows(min_row=2, values_only=True): record = dict(zip(headers, row)) sales_records.append(record) # 按列读取产品销售额 product_sales = {} product_col_index = headers.index("产品名称") + 1 sales_col_index = headers.index("销售额") + 1 # 遍历产品列和销售额列 for product, sales in zip( sheet.iter_cols(min_col=product_col_index, max_col=product_col_index, min_row=2, values_only=True), sheet.iter_cols(min_col=sales_col_index, max_col=sales_col_index, min_row=2, values_only=True) ): for p, s in zip(product, sales): if p not in product_sales: product_sales[p] = 0 product_sales[p] += s return sales_records, product_sales # 使用示例 records, product_totals = read_sales_data("sales_data.xlsx") print("总销售记录数:", len(records)) print("产品销售额统计:", product_totals)
八、性能优化技巧
- 使用
read_only=True
模式打开大型文件:load_workbook(file, read_only=True)
- 指定
values_only=True
参数只获取值,忽略格式信息 - 精确指定读取范围(行和列的范围)减少内存占用
- 处理完成后及时关闭工作簿:
workbook.close()
- 避免在循环中频繁访问同一单元格,可以先将数据加载到内存
九、总结
通过本教程,您已经掌握了使用openpyxl按行和按列读取Excel数据的方法。关键点总结:
- 按行读取:使用
iter_rows()
方法,适合处理记录型数据 - 按列读取:使用
iter_cols()
方法,适合分析特定数据指标 - 参数使用:通过min_row/max_row和min_col/max_col精确控制读取范围
- 性能优化:对于大型文件,使用只读模式和values_only参数
掌握这些技巧后,您可以高效地处理各种Excel数据分析任务,为数据清洗、分析和报告生成提供强大支持。
本文由JiangXia于2025-07-28发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256698.html
发表评论