在日常的办公自动化中,处理Excel文件是非常常见的任务。Python提供了许多库来帮助我们操作Excel文件,其中xlrd
是一个经典的选择,虽然近年来xlrd
对读取Excel文件的支持有所变化,但它仍然是一个非常有用的工具。下面我们将通过一个实际的Excel文件示例,讲解如何使用xlrd
读取文档内容的步骤、一些关键的函数或属性。
一、安装 xlrd
库
在使用xlrd
之前,首先需要安装这个库。可以使用以下命令安装:
pip install xlrd==1.2.0
注意:
xlrd
1.2.0版本及以下支持.xls和.xlsx格式的文件,从2.0.0版本开始只支持.xls格式的文件。因此,如果需要处理.xlsx格式的文件,建议使用1.2.0版本。
二、导入 xlrd
并打开Excel文件
我们将首先导入xlrd
库,并使用它打开一个Excel文件。假设我们已经有一个名为“巴黎奥运会奖牌榜.xlsx”的文件。
import xlrd
# 打开Excel文件
file_path = '/mnt/data/巴黎奥运会奖牌榜.xlsx'
workbook = xlrd.open_workbook(file_path)
xlrd.open_workbook()
函数用于打开一个Excel文件,并返回一个Book
对象,这个对象代表整个Excel文件。
三、选择工作表
一个Excel文件中可以包含多个工作表,我们需要先选择要读取的工作表。可以通过以下两种方式来选择:
- 按名称选择工作表
sheet = workbook.sheet_by_name('Sheet1') # 假设工作表名称为Sheet1
- 按索引选择工作表
sheet = workbook.sheet_by_index(0) # 选择第一个工作表
四、读取单元格内容
选择工作表后,我们可以读取单元格中的内容。读取内容的关键函数有以下几个:
sheet.cell(rowx, colx)
:返回指定单元格的内容,返回的对象是Cell
对象,可以使用value
属性来获取实际数据。
cell_value = sheet.cell(0, 0).value # 读取第1行第1列的内容
sheet.row_values(rowx)
:返回指定行的所有单元格的值。
row_values = sheet.row_values(0) # 读取第1行的所有内容
sheet.col_values(colx)
:返回指定列的所有单元格的值。
col_values = sheet.col_values(0) # 读取第1列的所有内容
五、获取工作表的基本信息
在读取数据前,通常我们需要了解一些工作表的基本信息,例如行数和列数:
sheet.nrows
:返回工作表的总行数。
total_rows = sheet.nrows
sheet.ncols
:返回工作表的总列数。
total_cols = sheet.ncols
六、遍历工作表内容
通过遍历工作表的行或列,我们可以批量读取数据:
# 遍历所有行
for row_index in range(sheet.nrows):
row = sheet.row_values(row_index)
print(f"第{row_index + 1}行: {row}")
# 遍历所有列
for col_index in range(sheet.ncols):
col = sheet.col_values(col_index)
print(f"第{col_index + 1}列: {col}")
七、完整代码示例
以下是一个完整的代码示例,展示了如何使用xlrd
读取并打印Excel文件的内容:
import xlrd
# 打开Excel文件
file_path = '/mnt/data/巴黎奥运会奖牌榜.xlsx'
workbook = xlrd.open_workbook(file_path)
# 选择工作表
sheet = workbook.sheet_by_index(0) # 选择第一个工作表
# 打印工作表的基本信息
print(f"总行数: {sheet.nrows}")
print(f"总列数: {sheet.ncols}")
# 打印所有行的内容
for row_index in range(sheet.nrows):
row = sheet.row_values(row_index)
print(f"第{row_index + 1}行: {row}")
通过以上步骤,您可以使用xlrd
轻松地读取Excel文件的内容。xlrd
库对于处理Excel文件中的数据非常方便,尤其是当您需要从多个工作表中提取数据或进行批量处理时。不过要注意,xlrd
的新版本已经不再支持.xlsx
格式的文件,因此在使用时需要选择合适的版本。或者选择使用其它库,如 openpyxl进行读取操作.