저는 회사에서 데이터베이스에 자료를 저장하고, 가공해서 결과물을 만드는 업무를 맡고 있습니다
하지만 기존 자료는 엑셀 파일이 대다수이기 때문에 python과 openpyxl을 조합한 코드가 많죠
기존 엑셀로 파일로 저장된 파일을 데이터베이스 저장 등 활용을 위해서는 시트 내의 값이 필요합니다
이번 글에선 지난 글에서 기록한 enumerate를 사용해보려고 합니다
Enumerate에서는 List와 같이 iterate object(반복 객체)를 인자로 받아 아래와 같이 해당 항목에 대한 index를 같이 반환해줍니다
학번 | 이름 |
---|---|
2017 | 김영희 |
2019 | 김철수 |
위와 같은 시트에서 [[‘2017’, ‘김영희’], [‘2019’, ‘김철수’]]와 같이 Python의 배열 형태로 얻고자 합니다
# workbook, worksheet을 load하는 부분을 생략하겠습니다.
list_user = [] # 출력할 배열입니다.
for index, row in worksheet.rows:
cell_values = []
if index > 1: # 지난 글에서 기록한 것처럼, 헤더는 생략하기 위함입니다.
for cell in row: # openpyxl에서는 한 행을 배열로 반환합니다.
cell_values.append(cell.value)
list_user.append(cell_values)
print(list_user)
각 셀을 for문을 통해 차례대로 value를 얻는 것을 확인할 수 있습니다.
List comprehension을 통해 값을 얻어보겠습니다
# workbook, worksheet을 load하는 부분을 생략하겠습니다.
list_user = [] # 출력할 배열입니다.
for index, row in worksheet.rows:
if index > 1: # 지난 글에서 기록한 것처럼, 헤더는 생략하기 위함입니다.
list_user.append([cell.value for cell in row])
print(list_user)
# workbook, worksheet을 load하는 부분을 생략하겠습니다.
print([[cell.value for cell in row] for row in worksheet.rows])
각 셀별로 값을 얻을 때 필요한 list 및 for문을 없애거나, 단 한줄로 시트 내 모든 값을 얻을 수 있습니다.