Python OpenPyXL 엑셀 여러 셀 값 취득 방법

파이썬에서 OpenPyXL을 사용해 엑셀의 셀 값을 취득하는 방법을 알아봤었습니다.

이번에는 엑셀의 여러 개의 셀 값을 취득하는 방법에 대해서 알아보겠습니다.

지난 내용인 하나의 셀에서 값을 취득하는 방법에 대해서는 아래 내용을 참조해주세요.

 

여러개 셀에서 값 취득하기

셀에서 값을 취득하는 방법 하기 위해서 행 번호와 열 번호를 지정해 해당 셀에 접근하여 값을 취득할 수 있습니다.

엑셀시트오브젝트.cell(row=행 번호, column=열 번호)

 

여러 개의 셀에서 값을 취득하기 위해서 반복문인 for문을 사용하겠습니다.

샘플로 엑셀 B열에 있는 값을 취득하는 방법을 알아보겠습니다.

샘플 소스

import openpyxl
wb =openpyxl.load_workbook('test.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

for i in range(1,8):
    print(sheet.cell(row=i, column=2).value)

 

결과

Apples
Cherries
Pears
Oranges
Apples
Bananas
Strawberries

 

B열에 있는 값을 모두 취득했습니다.

위 샘플에서는 엑셀의 7번째 행까지 값이 들어있는 것을 알고 있었기 때문에 for i in range(1,8): 라고 위치를 지정할 수 있었습니다.

하지만, 엑셀에 8번째, 9번째 행에 값을 입력해 내용을 변경하게 되면 추가로 작성한 내용은 취득해 올 수 없습니다.

이번에는 엑셀 파일에 내용이 추가돼도 추가된 값을 취득해 올 수 있는 샘플 소스를 보겠습니다.

 

샘플 소스

import openpyxl
wb =openpyxl.load_workbook('test.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

for cell_obj in list(sheet.columns)[1]:
    print(cell_obj.value)

결과

Apples
Cherries
Pears
Oranges
Apples
Bananas
Strawberries

 

B열에 있는 모든 값을 취득했습니다.

for문을 살펴보겠습니다.

for cell_obj in list(sheet.columns)[1]:

 

list 함수를 사용하면 지정한 열에 값이 존재하는 모든 셀에서 값을 취득해 올 수 있습니다.

엑셀 파일의 열 기준이 아닌 행 기준으로 모든 값을 취득하고 싶은 경우에는 columns대신 rows를 사용하면 됩니다.

 

행 기준 모든 값 가져오기

import openpyxl
wb =openpyxl.load_workbook('test.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

for cell_obj in list(sheet.rows)[1]:
    print(cell_obj.value)

 

데이터가 많이 들어있는 엑셀 파일에서 행 단위나, 열 단위로 모든 값을 취득해오거나

일정 범위의 여러개 셀의 값을 취득해올 때 유용하게 사용할 수 있습니다.

댓글