다음으로 엑셀 파일의 셀들을 모두 읽어 들이겠습니다.
>>> g = ws.rows #1
>>> cells = next(g) #2
>>> cells
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>, <Cell 'Sheet1'.D1>)
rows는 데이터가 있는 모든 행을 발생자 객체로 반환합니다(#1). 그리고 next() 함수로 첫 번째 행을 가져와(#2) 출력하면 엑셀 파일의 셀들이 들어 있는 것을 확인할 수 있습니다.
TIP 발생자(generator)는 반복자(iterator)의 일종으로 next( ) 함수를 호출할 때마다 데이터를 차례대로 반환합니다. 모든 데이터가 반환되면 StopIteration 오류가 발생합니다.
그림 6-2를 보면 1행에 학생 이름과 과목명이 들어 있습니다. 1행을 학생 데이터를 담을 딕셔너리의 키(key)로 사용하겠습니다. 다음과 같이 keys라는 리스트에 담아 둡니다.
>>> keys = [ ]
>>> for cell in cells:
keys.append(cell.value) #1
>>> keys
['name', 'math', 'literature', 'science']
셀의 value에 접근해서 실제 값을 가져옵니다(#1).