행과 열 전체를 읽어오는 방법
from openpyxl import load_workbook
wb = load_workbook("셀.xlsx")
ws = wb.active
i = 0
for x in range(1, ws.max_row + 1):
for y in range(1, ws.max_column + 1):
print(ws.cell(column = y, row = x).value, end=" ")
print()
max_row 및 max_column은 각 행, 열의 최댓값이다
그렇기 때문에 전체 행의 값을 범위로 x 값은
1행부터 순차적으로 마지막 행까지 돌아가며
y값은 또한 전체 열 범위이므로 A1, B1 C1 .....
이렇게 돌아가고 첫번째 행이 다 돌면 다음행으로 for문을 통해 넘어간다
더 간결한 구문을 작성할 수 있다
from openpyxl import load_workbook
wb = load_workbook("셀.xlsx")
ws = wb.active
for a in ws:
for b in a:
print(b.value, end=" ")
print()
그것은 바로 전체 시트를 범위로 작성하는 방법인데
시트를 ws 라는 변수에 담고 a 라는 row 행을 뽑아낸다
1, 2, 3 행..
그 다음 1행을 기준으로 b 값은
A1, B1 C1 ..... 이렇게 순차적으로 값을 뽑아낼 것이다
특정 열과 행을 뽑아서 가져와보자
for row in tuple(ws.rows):
print(row[1].value)
만약 데이터가 아래와 같다면
순번 이름 나이
1 김철수 22
2 박나희 23
3 김고은 25
row[1]이 의미하는 바는
1번 행의 2번째 데이터
2번 행의 2번째 데이터
3번 행의 2번째 데이터
4번 행의 2번째 데이터 ...
이렇게 출력되므로
이름
김철수
박나희
김고은
값을 가져올 것이다
for column in tuple(ws.columns):
print(column[1].value)
반대의 예시
특정 열과 행을 뽑아서 가져와보자2
for column in tuple(ws.columns):
print(column[1].value)
for column in ws.iter_cols():
print(column[1].value)
위 코드블럭의 아래 구문처럼 iter를 추가하여 작성하면 특정 범위, 전체를 지정할 수 있다.
그렇다면 특정 행을 지정하고 그 안에서 특정 열만 가져올 수 없을까?
for row in ws.iter_rows(min_row=1, max_row=4, min_col=2, min_col=5)
print(row[1].value)
위 코드처럼 튜플형태 코드가 아닌 iter를 쓰면서 가로 안에 범위를 지정해주면 된다.
다만 min_row값의 지정을 안하면 자동으로 처음부터
max_row값 지정을 안하면 최댓값으로 지정되니 모든 값을 지정할 필요는 없다
'IT 놀이터 > 파이썬 - 엑셀' 카테고리의 다른 글
2. 파이썬으로 엑셀 다루기 - 행과 열 그리고 셀 다루기 (0) | 2023.02.06 |
---|---|
1. 파이썬으로 엑셀 다루기 - 워크시트 생성 및 시트이름 변경 (0) | 2023.02.06 |
댓글