728x90
반응형
3. Cell 영역
1줄씩 데이터 넣기
from openpyxl import Workbook
from random import *
wb = Workbook() # 새 워크북 생성
ws = wb.active # 현재 활성화된 Sheet를 가져옴
# 1줄씩 데이터 넣기
ws.append(["번호", "영어", "수학"])
for i in range(1, 11):
ws.append([i, randint(0, 100), randint(0, 100)])
- append : 첫 행부터 차례로 아래 방향으로 삽입.
특정 셀 영역 가져오기
영어 열 가져오기
col_B = ws["B"] # 영어 column만 가져오기
# print(col_B)
for cell in col_B:
print(cell.value)
영어
44
32
91
52
42
90
93
68
74
62
영어, 수학 열 함께 가져오기
col_range = ws["B:C"] # 영어, 수학 column 함께 가져오기
# print(col_range)
for cols in col_range:
for cell in cols:
print(cell.value)
영어
75
1
64
15
13
83
15
42
41
27
수학
32
26
93
58
32
21
99
88
36
94
첫 번째 행(Title) 가져오기
row_title = ws[1]
for cell in row_title:
print(cell.value)
번호
영어
수학
특정 행 영역(2번째 행에서 6번째 행까지) 값 가져오기
row_range = ws[2:6] # 1번째 행인 title를 제외하고, 2번째 행에서 6번째 행까지 가져오기
for rows in row_range:
for cell in rows:
print(cell.value, end=" ")
print()
1 95 47
2 63 92
3 3 69
4 94 94
5 81 67
특정 행 영역(2번째 행에서 마지막 행까지) 값 가져오기
row_range = ws[2:ws.max_row] # 2번째 행에서 마지막 행까지 가져오기
for rows in row_range:
for cell in rows:
print(cell.value, end=" ") # 셀의 값
print()
1 80 23
2 3 47
3 73 41
4 70 57
5 42 35
6 32 88
7 0 20
8 61 52
9 62 27
10 59 97
특정 행 영역(2번째 행에서 마지막 행까지) 좌표 가져오기
row_range = ws[2:ws.max_row] # 2번째 행에서 마지막 행까지 가져오기
for rows in row_range:
for cell in rows:
print(cell.coordinate, end=" ") # 셀의 좌표
print()
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
A7 B7 C7
A8 B8 C8
A9 B9 C9
A10 B10 C10
A11 B11 C11
특정 행 영역(2번째 행에서 마지막 행까지) 좌표 슬라이싱해서 가져오기
from openpyxl.utils.cell import coordinate_from_string
row_range = ws[2:ws.max_row] # 2번째 행에서 마지막 행까지 가져오기
for rows in row_range:
for cell in rows:
xy = coordinate_from_string(cell.coordinate) # 슬라이싱된 셀의 좌표
print(xy, end=" ")
# print(xy[0], end="") # A
# print(xy[1], end=" ") # 1
print()
('A', 2) ('B', 2) ('C', 2)
('A', 3) ('B', 3) ('C', 3)
('A', 4) ('B', 4) ('C', 4)
('A', 5) ('B', 5) ('C', 5)
('A', 6) ('B', 6) ('C', 6)
('A', 7) ('B', 7) ('C', 7)
('A', 8) ('B', 8) ('C', 8)
('A', 9) ('B', 9) ('C', 9)
('A', 10) ('B', 10) ('C', 10)
('A', 11) ('B', 11) ('C', 11)
- 슬라이싱 좌표를 사용하기 위해서 coordinate_from_string을 import한다.
- 주석된 print문을 해제하면 바로 위의 결과와 똑같다.
전체 영역 가져오기
전체 행 가져오기
# 전체 rows
# print(tuple(ws.rows))
for row in tuple(ws.rows):
print(row[0].value, row[1].value, row[2].value)
# 전체 rows
for row in ws.iter_rows():
print(row[0].value, row[1].value, row[2].value)
번호 영어 수학
1 56 50
2 57 25
3 80 69
4 43 47
5 40 1
6 40 61
7 62 26
8 64 28
9 94 4
10 99 29
- iter_rows()를 주로 사용한다.
전체 열 가져오기
# 전체 columns
# print(tuple(ws.columns))
for column in tuple(ws.columns):
print(column[0].value)
# 전체 columns
for column in ws.iter_cols():
print(column[0].value)
번호
영어
수학
- 전체 열을 가져온 뒤, 첫 번째 행만 print했다.
특정 셀 영역 가져오기(가장 많이 사용함)
# 2번째 줄부터 11번째 줄까지, 2번째 열부터 3번째 열까지
for row in ws.iter_rows(min_row=2, max_row=11, min_col=2, max_col=3): # 한 행씩 가져오기
# print(row)
print(row[0].value, row[1].value) # 영어, 수학
45 55
51 58
72 11
81 100
18 65
54 8
7 93
36 88
72 12
65 29
# 1번째 줄부터 15째 줄까지, 1번째 열부터 3번째 열까지
for col in ws.iter_cols(min_row=1, max_row=5, min_col=1, max_col=3): # 한 열씩 가져오기
print(col[0].value, col[1].value, col[2].value, col[3].value, col[4].value)
번호 1 2 3 4
영어 100 96 4 2
수학 19 47 97 26
- 보통 iter_rows(), iter_cols()로 영역을 설정해서 많이 사용한다.
- iter_rows(), iter_cols() 내부의 파라미터 min, max의 default는 각각 최소, 최대값이다.
728x90
반응형
'Software > Python' 카테고리의 다른 글
[Openpyxl] 5. 찾기, 수정, 삽입, 삭제, 이동 (0) | 2024.01.28 |
---|---|
[Openpyxl] 4. Cell 서식 (0) | 2024.01.28 |
[Openpyxl] 2. Cell 기초 (0) | 2024.01.22 |
[Openpyxl] 1. Workbook, Worksheet (0) | 2024.01.22 |
[판다스(Pandas)] 1. 시리즈(Series) (0) | 2023.11.13 |
댓글