openpyxl遍历column => TypeError的单元格:'generator'对象不是可以下载的

我想遍历列的所有值,以安全他们作为一个字典中的关键。 据我所知,一切都好,但python不同意。

所以我的问题是:“我做错了什么?”

>>> wb = xl.load_workbook('/home/x/repos/network/input/y.xlsx') >>> sheet = wb.active >>> for cell in sheet.columns[0]: ... print(cell.value) ... Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'generator' object is not subscriptable 

我必须要失去一些东西,但经过几个小时的努力之后,我必须把它扔进沙袋里,然后在沙发里打电话;)

在此先感谢所有的帮助!

================================================== =================

@Charlie Clark:谢谢你花时间回答。 事情是,我需要第一列作为字典中的键,然后,我需要做的

 for cell in sheet.columns[1:]: 

所以,虽然它可以解决我的问题,但是在我的代码中,它会在几行后回到我的头上。 我将在我的代码中使用您的build议来提取密钥。

我主要的问题是:

为什么它不工作,我相信我之前使用这个代码片段,这也是如何,当谷歌search,人们正在build议这样做。

================================================== ========================

 >>> for column in ws.iter_cols(min_col = 2): ... for cell in column: ... print(cell.value) 

除了第一个以外,会覆盖在表格的所有列上。 现在,我仍然需要排除前3行

ws.columns返回一个列的生成器,因为这对于大型工作簿来说效率更高,就像你的情况一样:你只需要一列。 现在, 版本2.4提供了直接获取列的选项: ws['A']

显然,openpyxl模块升级到2.4,不知道。

 >>> for col in ws.iter_cols(min_col = 2, min_row=4): ... for cell in col: ... print(cell.value) 

应该做的伎俩。 我张贴这个以防其他人在寻找相同的答案。

 iter_cols(min_col=None, max_col=None, min_row=None, max_row=None)[source] Returns all cells in the worksheet from the first row as columns. If no boundaries are passed in the cells will start at A1. If no cells are in the worksheet an empty tuple will be returned. Parameters: min_col (int) – smallest column index (1-based index) min_row (int) – smallest row index (1-based index) max_col (int) – largest column index (1-based index) max_row (int) – smallest row index (1-based index) Return type: generator