Using Openpyxl and python3.5, I tried getting the first row from an excel worksheet using a subscript but I an error.
# after getting filename
# after loading w
I finally found the answer in the documentation:
first_row = worksheet[1]
# worksheet[row_index_from_1]
This worked for me.
The error TypeError: 'generator' object is not subscriptable
. Means that you are trying to access by index a generator, which doesn't have one, because it creates the elements as you iterate through it.
You can solve it easily, cast it to a list to get the element you want:
first_row = list(worksheet.rows)[0]
or iterate thought the rows:
for row in worksheet.rows:
foo(row)
This is because, even if both are iterables, lists and generators can behave quite differently, you can get it better explained here:
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