2011-08-07 44 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