Openpyxl如何通过索引从工作表中获取行

使用Openpyxl和python3.5,我试图从一个Excel工作表使用下标,但我是一个错误。

# after getting filename # after loading worksheet # to get the first row of the worksheet first_row = worksheet.rows[0] # I get Traceback (most recent call last): File "<pyshell#54>", line 1, in <module> first_row = phc_th_sheet.rows[1] TypeError: 'generator' object is not subscriptable 

关于获得第一行,我也试过first_row = worksheet。(row = 1)#和first_row = worksheet.rows [:1]

没有工作。 任何build议或是function不可用在openpyxl? 我去过https://openpyxl.readthedocs.io/en/default/上的文档,但是我发现没有什么帮助索引和select行

我终于在文档中find了答案:

 first_row = worksheet.rows[1] # worksheet.rows[row_index_from_1] 

这对我有效。

错误TypeError: 'generator' object is not subscriptable 。 意思是你试图通过索引来访问一个没有的生成器,因为它在迭代它的时候创build了元素。

你可以很容易地解决它,把它转换成列表来获取你想要的元素:

 first_row = list(worksheet.rows)[0] 

或迭代思路的行:

 for row in worksheet.rows: foo(row) 

这是因为即使两者都是可迭代的,列表和生成器的行为可能完全不同,所以在这里可以更好地解释它:

https://wiki.python.org/moin/Generators

https://docs.python.org/3/library/stdtypes.html#iterator-types

https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range