2011-08-07 43 views
3

如果我在Excel(.xls)工作表中有两行(如键值对),是否有办法通过输入键(row0)来获取值(row1)在xlrd中?使用xlrd获取按列名称的单元格

举例来说,如果我有(0,0) = COLOR(1,0) = RED,我怎么会做这样的事情:

value = sh.col_values("COLOR") ? 

我已经能够找到的最接近的是sh.col_values(int),但只允许我在指数进入。

回答

2

您必须向下搜索列,直到找到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)代替。

编辑:也更新为搜索栏。

+0

好的谢谢。如果我不知道它是在哪一列呢? – David542

+1

看看我的编辑。应该在整张表格中搜索关键字,然后返回紧靠下面的单元格的值。如果你可以进一步限制搜索空间,只需更改'xrange's。 – agf

+0

真棒,谢谢。 – David542