逐行读取.xls文件数据 Python

4 投票
1 回答
2007 浏览
提问于 2025-04-18 08:07

我想要逐行读取 .xls 文件的数据,并且是通过某个特定单元格的值来读取。

假设有几个主要的列,分别是 ID、姓名、地址、年龄、分数和专业。这些就是主要的字段。

现在我想要访问第 4 行的数据。

我想通过某个单元格的值来访问整行数据。

我试了一些方法:

import xlrd
workbook = xlrd.open_workbook('sheet2.xls')
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows - 1
num_cells = worksheet.ncols - 1
curr_row = -1
while curr_row < num_rows:
    curr_row += 1
    row = worksheet.row(curr_row)
    print 'Row:', curr_row
    curr_cell = -1
    while curr_cell < num_cells:
        curr_cell += 1
        # Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 5=Error, 6=Blank
        cell_type = worksheet.cell_type(curr_row, curr_cell)
        cell_value = worksheet.cell_value(curr_row, curr_cell)
        print ' ', cell_type, ':', cell_value

所以我得到了这样的输出:

Row: 8
        2 : 96.0
        1 : Robert
        1 : Honore
        1 : 607-829-7943
        2 : 56.0
        1 : Faye
        1 : Wight
        1 : Faye.A.Wight@mailinator.com

这样打印出来的整行数据格式是这样的。但我想要通过值来访问这一行。

我们可以用 cell_value = worksheet.cell_value(1, 1) 来获取单元格的值,但我该如何根据这个单元格的值来找到行号呢?我想要根据条件,比如 (id==5) 或 (age==17) 来获取整行数据。

请帮我解决这个问题。

1 个回答

2

你想做的事情叫做“搜索”,但是用 xlrd 是做不到的。这个工具不支持搜索功能。你必须自己通过一个循环来遍历数据,然后进行搜索。

其实这很简单,但要注意性能问题。比如,如果你打算在表格中多次搜索某些内容,那就考虑在第一次查找后把解析出来的数据缓存起来,存到内存里,以便下次使用。

撰写回答