通过列名使用xlrd获取单元格

4 投票
1 回答
10650 浏览
提问于 2025-04-16 23:03

如果我在Excel(.xls)表格里有两行数据,像是键值对那样,有没有办法通过输入键(第一行)来获取值(第二行),使用xlrd这个库呢?

举个例子,如果我有 (0,0) = COLOR(1,0) = RED,我该怎么做才能像这样:

value = sh.col_values("COLOR") ?

我找到的最接近的办法是 sh.col_values(int),但这个方法只能让我输入一个索引。

1 个回答

3

你需要沿着这一列往下查找,直到找到 COLOR,然后获取它下面那一行的值。

from itertools import product

def value_from_key(sheet, key):
    for row_index, col_index in product(xrange(sheet.nrows), xrange(sheet.ncols)):
        if sheet.cell(row_index, col_index).value == key:
            return sheet.cell(row_index+1, col_index).value

value = value_from_key(sheet, 'COLOR')

如果你知道这些键是在偶数行还是奇数行,你可以用 xrange(0, sheet.nrows, 2) 或者 xrange(1, sheet.nrows, 2) 来代替。

补充:更新了内容,现在也可以搜索列了。

撰写回答