
▶ 셀 범위 지정으로 셀 값 읽고 쓰기 2 -열 기준 모든 셀 얻기
셀의 범위를 지정할 때 열 또는 행을 기준으로 모든 셀을 얻을 수 있다.
열을 기준으로 한다는 것은 아래의 그림 예에서 처럼 B~D 열의 모든 셀을 얻는다는 의미이고,

행을 기준으로 한다는 것은 아래의 그림 예에서 처럼 2~4 행의 모든 셀을 얻는다는 의미이다.

단, 반환되는 열 또는 행의 마지막 셀은 worksheet 기준 어느 위치에 셀의 값이 저장되어 있는지에 따라 다르다.
▶ 열을 기준으로 셀 얻기
열을 기준으로 셀의 범위를 지정하고자 한다면 다음의 코드에서 처럼 숫자를 제외한 원하는 열에 해당하는 알파벳을 사용하면 된다.
cells_col = worksheet['B:D']
cells_col 변수의 데이터 타입은 tuple로, tuple 내에 어떠한 값이 저장되어 있는지, 어떠한 셀이 반환되는지 확인하기 위해 다음의 코드를 실행해 본다.
# python 3.9.5
# openpyxl 3.0.7
from openpyxl import load_workbook
workbook = load_workbook('sample.xlsx')
worksheet = workbook.active
cells_col = worksheet['B:D']
print(type(cells_col))
print()
for cell in cells_col:
print(cell)

열을 기준으로 셀의 범위를 지정하면, 지정한 왼쪽 첫번째 열(B열)에 해당하는 셀들이 우선적으로 tuple로 묶여 반환된다.

다음의 코드에서 처럼 슬라이싱을 통해 둘 이상의 열뿐만 아니라 하나의 열도 지정하는 것이 가능하다.
# python 3.9.5
# openpyxl 3.0.7
from openpyxl import load_workbook
workbook = load_workbook('sample.xlsx')
worksheet = workbook.active
cells_col = worksheet['B']
print(type(cells_col))
print()
for cell in cells_col:
print(cell)

위의 코드 실행 결과에서 처럼 반환된 마지막 셀은 B6이다.
다음의 코드는 sample.xlsx 엑셀 파일을 불러온 후 셀 F10에 문자열 'Hello 10'을 입력한 후 엑셀 파일을 저장하는 코드이다.
# python 3.9.5
# openpyxl 3.0.7
from openpyxl import load_workbook
workbook = load_workbook('sample.xlsx')
worksheet = workbook.active
cells_col = worksheet['B']
print(type(cells_col))
print()
for cell in cells_col:
print(cell)
print()
print(worksheet.max_column)
worksheet['F10'].value = 'Hello 10'
workbook.save()
위의 코드를 실행한 결과는 아래와 같고,

엑셀 파일을 열면 아래의 그림에서 처럼 셀 F10에 'Hello 10'이 저장되어 있는 것을 볼 수 있다.

이제 다시 아래의 코드를 실행해 보면, 마지막으로 출력되는 셀은 B10인 것을 볼 수 있다.
# python 3.9.5
# openpyxl 3.0.7
from openpyxl import load_workbook
workbook = load_workbook('sample.xlsx')
worksheet = workbook.active
cells_col = worksheet['B']
print(type(cells_col))
print()
for cell in cells_col:
print(cell)
print()
print(worksheet.max_column)

위 코드에서 열 최대 개수엔 변동은 없지만 (worksheet.max_column),
만약 행 최대 개수인 worksheet.max_row를 출력한다면 10이 출력됨을 확인할 수 있다.
print(worksheet.max_row)