source

Openpyxl 인덱스별 워크시트에서 행을 가져오는 방법

manycodes 2023. 5. 11. 21:34
반응형

Openpyxl 인덱스별 워크시트에서 행을 가져오는 방법

Openpyxl과 python3.5를 사용하여 엑셀 워크시트에서 첨자를 사용하여 첫 번째 행을 가져오려고 했지만 오류가 발생했습니다.

# 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 = 워크시트를 시도했습니다. (row=1) #과 first_row = workshot.rows[:1]

아무 것도 작동하지 않았습니다.제안 사항이 있거나 openpyxl에서는 이 기능을 사용할 수 없습니까?https://openpyxl.readthedocs.io/en/default/ 의 설명서를 찾아봤지만 행을 색인화하고 선택할 수 있을 정도로 도움이 되는 것을 발견하지 못했습니다.

저는 마침내 문서에서 답을 찾았습니다.

first_row = worksheet[1]
# worksheet[row_index_from_1]

이것은 저에게 효과가 있었습니다.

오류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

언급URL : https://stackoverflow.com/questions/40561670/openpyxl-how-to-get-row-from-worksheet-by-index

반응형