当前位置:首页 > Python > 正文

Python xlrd库文件读取教程 - 完整指南与代码示例

Python xlrd库文件读取教程

全面指南:使用xlrd库读取和处理Excel文件,包含详细代码示例和最佳实践

Python xlrd库文件读取教程 - 完整指南与代码示例  xlrd Excel读取 文件处理 数据分析 Python教程 Excel处理 2025 第1张 Python数据分析专家 | 最后更新: 2023年10月15日

📌 xlrd库简介

xlrd是一个用于读取Excel文件的Python库,支持.xls和.xlsx格式(较新版本仅支持.xls)。它允许开发者从Excel文件中提取数据、元数据以及公式计算结果。

主要功能

  • 读取Excel文件(支持.xls格式)
  • 访问工作表、行、列和单元格数据
  • 提取单元格值、数据类型和公式
  • 处理日期和时间格式
  • 获取工作簿元数据(作者、创建日期等)

⚙️ 安装xlrd库

使用pip命令安装xlrd库:

# 安装最新版本的xlrd
pip install xlrd
注意: xlrd 2.0.0及以上版本不再支持.xlsx文件格式。如需读取.xlsx文件,请使用openpyxl库或安装xlrd 1.2.0版本:
pip install xlrd==1.2.0

📝 基础用法

1. 打开Excel文件

import xlrd

# 打开工作簿
workbook = xlrd.open_workbook('example.xls')

# 获取所有工作表名称
sheet_names = workbook.sheet_names()
print("工作表名称:", sheet_names)

2. 选择工作表

# 通过索引选择第一个工作表
sheet = workbook.sheet_by_index(0)

# 通过名称选择工作表
sheet = workbook.sheet_by_name('Sheet1')

3. 读取工作表信息

# 获取工作表名称
print("工作表名称:", sheet.name)

# 获取行数和列数
print("行数:", sheet.nrows)
print("列数:", sheet.ncols)

🔍 读取单元格数据

示例Excel数据

Python xlrd库文件读取教程 - 完整指南与代码示例  xlrd Excel读取 文件处理 数据分析 Python教程 Excel处理 2025 第2张

读取单元格代码

# 读取单元格值
# 方法1:使用行列索引
cell_value = sheet.cell_value(1, 1) # 第2行第2列
print("B2单元格值:", cell_value) # 输出: 产品A

# 方法2:使用行列索引(带类型)
cell_type = sheet.cell_type(2, 2) # 第3行第3列
cell_value = sheet.cell_value(2, 2)
print("C3单元格值:", cell_value, "类型:", cell_type)

# 方法3:使用行和列对象
row = sheet.row(0) # 获取第一行
print("第一行:", [cell.value for cell in row])

# 方法4:读取整列
col = sheet.col(1) # 获取第二列
print("第二列:", [cell.value for cell in col])

处理日期数据

# 读取日期单元格
date_value = sheet.cell_value(1, 3) # 假设D2是日期
date_tuple = xlrd.xldate_as_tuple(date_value, workbook.datemode)

# 转换为datetime对象
from datetime import datetime
py_date = datetime(*date_tuple[:6])
print("日期:", py_date.strftime("%Y-%m-%d"))

📊 读取整个工作表

# 读取整个工作表到列表
data = []
for row_idx in range(sheet.nrows):
    row_data = []
    for col_idx in range(sheet.ncols):
        cell_value = sheet.cell_value(row_idx, col_idx)
        row_data.append(cell_value)
    data.append(row_data)

# 打印前3行
for i, row in enumerate(data[:3]):
    print(f"行 {i}: ", row)

使用列表推导式简化

# 更简洁的读取方式
data = [[sheet.cell_value(r, c) for c in range(sheet.ncols)]
            for r in range(sheet.nrows)]

💡 最佳实践与常见问题

最佳实践

  • 使用with语句确保文件正确关闭
  • 处理大型文件时逐行读取,避免内存不足
  • 检查单元格类型后再处理数据
  • 对日期数据使用xlrd.xldate_as_tuple转换
  • 处理空单元格时使用默认值

常见问题

Q: 为什么读取日期得到的是数字?
A: Excel将日期存储为数字,需要使用xlrd.xldate_as_tuple()xlrd.xldate_as_datetime()转换。

Q: 如何判断单元格是否为空?
A: 检查cell.ctype == xlrd.XL_CELL_EMPTY或值是否为空字符串。

Q: 为什么无法读取.xlsx文件?
A: xlrd 2.0.0+版本移除了对.xlsx的支持。请使用openpyxl或pandas读取.xlsx文件。

替代方案

  • openpyxl - 读写.xlsx文件
  • pandas - 高级数据处理,支持多种Excel格式
  • xlwings - 与Excel应用程序交互
  • pyexcel - 统一API处理多种电子表格格式

© 2023 Python数据处理教程 | 本教程仅供学习参考 | 使用xlrd 2.0.1版本

发表评论