저는 회사에서 데이터베이스에 자료를 저장하고, 가공해서 결과물을 만드는 업무를 맡고 있습니다

하지만 기존 자료는 엑셀 파일이 대다수이기 때문에 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문을 없애거나, 단 한줄로 시트 내 모든 값을 얻을 수 있습니다.

About the author

대학교에서 소프트웨어를 전공하는 백엔드와 데이터베이스에 관심이 많은 주니어 개발자입니다.
제가 진행중인 프로젝트에 관심이 많으시다면, 제 깃허브에 방문해주세요.