杰瑞科技汇

python 读取excel行数据

使用 pandas (最推荐)

pandas 是 Python 数据分析的核心库,它提供了非常简洁和高效的方式来处理表格数据,包括 Excel 文件,这是绝大多数情况下的首选。

python 读取excel行数据-图1
(图片来源网络,侵删)

安装 pandasopenpyxl

pandas 本身不直接处理 Excel 文件,它依赖于其他引擎。openpyxl 是一个常用的引擎,用于处理 .xlsx 格式。

pip install pandas openpyxl

基本用法

读取整个工作表 使用 pandas.read_excel() 函数,它会返回一个 DataFrame 对象,你可以像操作列表一样操作它。

import pandas as pd
# 指定 Excel 文件路径
file_path = 'your_data.xlsx' 
# 读取第一个工作表(默认)
df = pd.read_excel(file_path)
# 打印整个 DataFrame
print(df)

按行读取数据 DataFrame 的行数据可以通过 .iterrows() 方法进行迭代。.iterrows() 会返回每一行的索引和包含该行所有数据的 Series 对象。

import pandas as pd
file_path = 'your_data.xlsx'
df = pd.read_excel(file_path)
print("--- 使用 iterrows() 按行迭代 ---")
for index, row in df.iterrows():
    # index 是行的索引 (0, 1, 2, ...)
    # row 是一个 Pandas Series 对象,包含了该行的所有数据
    print(f"行索引: {index}")
    print(f"行数据: {row.to_dict()}") # 将 Series 转换为字典方便查看
    print("-" * 20)

获取特定行 你可以通过索引来获取特定的行。

python 读取excel行数据-图2
(图片来源网络,侵删)
import pandas as pd
file_path = 'your_data.xlsx'
df = pd.read_excel(file_path)
# 获取第 2 行 (索引为 1)
first_row = df.iloc[1] 
print("第 2 行的数据:")
print(first_row)
# 获取第 2 行到第 4 行 (索引为 1 到 3)
some_rows = df.iloc[1:4]
print("\n第 2 行到第 4 行的数据:")
print(some_rows)

读取指定的工作表 一个 Excel 文件可以包含多个工作表,你可以通过 sheet_name 参数来指定读取哪个。

import pandas as pd
file_path = 'your_data.xlsx'
# 读取名为 "Sheet2" 的工作表
df_sheet2 = pd.read_excel(file_path, sheet_name='Sheet2')
# 读取第二个工作表(索引从 0 开始)
df_sheet1_by_index = pd.read_excel(file_path, sheet_name=1) 
print("从 'Sheet2' 读取的数据:")
print(df_sheet2)

使用 openpyxl

openpyxl 是一个更底层的库,它允许你直接操作 Excel 文件的内部结构,如果你需要对 Excel 进行更复杂的操作,比如修改样式、合并单元格等,openpyxl 会更灵活。

安装 openpyxl

pip install openpyxl

基本用法

加载工作簿和工作表 首先需要加载整个工作簿,然后选择要操作的工作表。

from openpyxl import load_workbook
file_path = 'your_data.xlsx'
# 加载工作簿
# data_only=True 表示读取单元格的值,而不是公式
wb = load_workbook(filename=file_path, data_only=True) 
# 选择第一个工作表
ws = wb.active 
# 或者按名称选择工作表
# ws = wb['Sheet1']

按行迭代读取 openpyxl 将工作表的行表示为一个可迭代对象,每一行又是一个由 Cell 对象组成的元组。

python 读取excel行数据-图3
(图片来源网络,侵删)
from openpyxl import load_workbook
file_path = 'your_data.xlsx'
wb = load_workbook(filename=file_path, data_only=True)
ws = wb.active
print("--- 使用 openpyxl 按行迭代 ---")
# ws.iter_rows() 会返回一个生成器,每次产生一行
for row in ws.iter_rows(values_only=True): # values_only=True 直接获取单元格的值
    # row 是一个元组,包含该行所有单元格的值
    print(row)

访问特定单元格和行 你可以通过行和列的索引来精确访问数据。

from openpyxl import load_workbook
file_path = 'your_data.xlsx'
wb = load_workbook(filename=file_path, data_only=True)
ws = wb.active
# 获取 A1 单元格的值
cell_a1 = ws['A1'].value
print(f"A1 单元格的值是: {cell_a1}")
# 获取第 2 行的所有数据
row_2 = []
for cell in ws[2]: # 直接访问行
    row_2.append(cell.value)
print(f"第 2 行的数据是: {row_2}")
# 获取从第 2 行到第 4 行的数据
print("\n从第 2 行到第 4 行的数据:")
for row in ws.iter_rows(min_row=2, max_row=4, values_only=True):
    print(row)

使用 xlrd (仅适用于旧版 .xls 格式)

xlrd 是一个专门用于读取 .xls (Excel 97-2003) 格式的库。注意:它不支持 .xlsx 格式,对于新格式,请使用 openpyxl

安装 xlrd

pip install xlrd

基本用法

import xlrd
file_path = 'your_old_data.xls' # 必须是 .xls 文件
# 打开工作簿
workbook = xlrd.open_workbook(file_path)
# 获取第一个工作表
sheet = workbook.sheet_by_index(0)
# 获取总行数和总列数
num_rows = sheet.nrows
num_cols = sheet.ncols
print(f"工作表有 {num_rows} 行, {num_cols} 列")
# 按行迭代
print("\n--- 使用 xlrd 按行迭代 ---")
for row_idx in range(num_rows):
    row_data = []
    for col_idx in range(num_cols):
        # cell_value(row, col) 获取指定单元格的值
        cell_value = sheet.cell_value(row_idx, col_idx)
        row_data.append(cell_value)
    print(f"第 {row_idx + 1} 行: {row_data}")

总结与对比

特性 pandas openpyxl xlrd
主要用途 数据分析、数据处理 Excel 文件操作(读、写、改) 仅读取旧版 Excel (.xls)
易用性 非常高,语法简洁,功能强大 中等,需要理解 Excel 对象模型 简单,但功能有限
数据格式 返回 DataFrame,便于后续分析 返回 Cell 对象或值,可直接操作 返回单元格的值
写入支持 支持 支持,功能强大 不支持
推荐场景 绝大多数情况,特别是当你需要对数据进行计算、筛选、统计时。 需要精细控制 Excel 样式、图表、公式等,或者读写混合操作时。 只需要读取老旧的 .xls 文件时。

最终建议

  • 如果你只是想读取 Excel 数据并进行处理、分析或转换请毫不犹豫地选择 pandas,它是最快、最高效、最符合 Python 数据分析生态的选择。
  • 如果你需要在读取数据的同时修改 Excel 文件(比如改变字体颜色、添加边框、写入新数据等),openpyxl 是你的不二之选。
  • 如果你的文件是古老的 .xls 格式,那么只能使用 xlrd
分享:
扫描分享到社交APP
上一篇
下一篇