Openpyxl如何按索引从工作表中获取行
Openpyxl How to get row from worksheet by index
使用 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 = 工作表。(行=1)
# 和
first_row = worksheet.rows[:1]
None 有效。有什么建议或者该功能在 openpyxl 中不可用吗?
我去过 https://openpyxl.readthedocs.io/en/default/ 的文档,但我发现没有足够的帮助来索引和 select 行
错误TypeError: 'generator' object is not subscriptable
。意味着您正在尝试通过索引访问一个没有生成器的生成器,因为它会在您遍历它时创建元素。
你可以很容易地解决它,将它转换为一个列表来获取你想要的元素:
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
终于在文档中找到了答案:
first_row = worksheet[1]
# worksheet[row_index_from_1]
这对我有用。
使用 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 = 工作表。(行=1) # 和 first_row = worksheet.rows[:1]
None 有效。有什么建议或者该功能在 openpyxl 中不可用吗? 我去过 https://openpyxl.readthedocs.io/en/default/ 的文档,但我发现没有足够的帮助来索引和 select 行
错误TypeError: 'generator' object is not subscriptable
。意味着您正在尝试通过索引访问一个没有生成器的生成器,因为它会在您遍历它时创建元素。
你可以很容易地解决它,将它转换为一个列表来获取你想要的元素:
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
终于在文档中找到了答案:
first_row = worksheet[1]
# worksheet[row_index_from_1]
这对我有用。