1. 셀에 값 삽입, 특정 셀 직접 지정
from openpyxl import Workbook #openpyxl 모듈의 Workbook 함수 사용 가능하도록 하는 구문
wb = Workbook() #Workbook 생성, 통합문서 생성이라고 생각하면 됨 -> wb 변수에 할당
ws = wb.active #Workbook 생성 시 최소 한개의 시트가 만들어짐, 활성화된 sheet 가져옴 -> wb 변수의 활성화된 sheet를 ws 에 할당
ws.title = '첫번째 시트' # 활성화된 sheet 인 ws 의 이름을 변경, 결과적으로 sheet 이름이 변경됨
ws.sheet_properties.tabColor = "00FFFF" # 시트 탭 색깔 변경, 원하는 색상의 RGB 코드 값 넣어줘야 함
ws['A4'] = 4 # 특정 셀에 값 삽입
test1 = ws['A4'] # 엑셀의 셀을 지정해 변수에 대입 가능
print(test1)
wb.save("create_excel_test.xlsx") # wb 통합문서를 저장하는 명령어, 파일이름 지정 가능
- 결과
<Cell '첫번째 시트'.A4>
2. 셀에 값 삽입, row, column 지정
from openpyxl import Workbook #openpyxl 모듈의 Workbook 함수 사용 가능하도록 하는 구문
wb = Workbook() #Workbook 생성, 통합문서 생성이라고 생각하면 됨 -> wb 변수에 할당
ws = wb.active #Workbook 생성 시 최소 한개의 시트가 만들어짐, 활성화된 sheet 가져옴 -> wb 변수의 활성화된 sheet를 ws 에 할당
ws.title = '첫번째 시트' # 활성화된 sheet 인 ws 의 이름을 변경, 결과적으로 sheet 이름이 변경됨
ws.sheet_properties.tabColor = "00FFFF" # 시트 탭 색깔 변경, 원하는 색상의 RGB 코드 값 넣어줘야 함
test2 = ws.cell(row=5, column=1, value = 5) # 위와 다른 방식으로 row 및 column 으로 지정 하여 값 삽입도 동시에 삽입 가능
print(test2)
wb.save("create_excel_test.xlsx") # wb 통합문서를 저장하는 명령어, 파일이름 지정 가능
- 결과
<Cell '첫번째 시트'.A5>
3. 셀에 값 삽입, 반복문을 통한 삽입
##### 아래부터는 해당 기능 관련 코드만 보임
for i in range(1,101): # 1 부터 100까지 반복하기 위한 반복문, row 값
col_num = 1 # column 값은 1 이며 곧 A 열을 가리킴
ws.cell(row=i, column=col_num, value = i) # A열의 1~100 행에 1~100 값 삽입
- 결과
행, 열 모두 반복하도록 한 코드
import random # 난수 발생 시키는 모듈 호출
for r in range(1,21): # 1 부터 100까지 반복하기 위한 반복문, row 값
for c in range(1,21): # column 값은 1 이며 곧 A 열을 가리킴
ws.cell(row=r, column=c, value = random.randrange(1,100)) # A열의 1~100 행에 1~100 의 정수형 랜덤값 삽입
#random.randrange(1,100) -> 1부터 100까지의 랜덤한 정수값 발생
- 결과
4. 셀 값 범위 지정
# 해당 기능 관련 코드만 보임
위의 정수형 랜덤값 삽입 반복문의 셀 선택, 20열 20행 있음
test_range = ws['C1':'D5'] # C1 부터 D5 까지 선택
print(f"C1 부터 D5 선택 {test_range}")
test_range1 = ws['C'] # C열 선택
print(f"C열 선택 {test_range1}")
test_range2 = ws['A:C'] # A 부터 C열 선택
print(f"A 열부터 C 열 선택 {test_range2}")
test_range3 = ws['W:Z'] # W 부터 Z열 선택
print(f"W 열부터 Z 열 선택 {test_range3}")
test_range4 = ws[5] # 5번째 행 선택
print(f"5번째 행 선택 {test_range4}")
test_range5 = ws[5:7] # 5번째 행부터 7번째 행 선택
print(f"5번째 행부터 7번째 행 {test_range5}")
test_range6 = ws[25:27] # 25번째 행부터 27번째 행 선택
print(f"25번째 행부터 27번째 행 {test_range6}")
- 결과
#이전에 선택된 범위에 대해 다음 범위가 영향을 받는듯 함
##맨처음 C1 부터 D5 까지 선택해서 C 열 선택 시 5열까지 선택됨
##W열부터 Z열 선택 이후 행 범위 출력 시 Z 열까지 선택됨
C1 부터 D5 선택 ((<Cell '첫번째 시트'.C1>, <Cell '첫번째 시트'.D1>), (<Cell '첫번째 시트'.C2>, <Cell '첫번째 시트'.D2>), (<Cell '첫번째 시트'.C3>, <Cell '첫번째 시트
'.D3>), (<Cell '첫번째 시트'.C4>, <Cell '첫번째 시트'.D4>), (<Cell '첫번째 시트'.C5>, <Cell '첫번째 시트'.D5>))
C열 선택 (<Cell '첫번째 시트'.C1>, <Cell '첫번째 시트'.C2>, <Cell '첫번째 시트'.C3>, <Cell '첫번째 시트'.C4>, <Cell '첫번째 시트'.C5>)
A 열부터 C 열 선택 ((<Cell '첫번째 시트'.A1>, <Cell '첫번째 시트'.A2>, <Cell '첫번째 시트'.A3>, <Cell '첫번째 시트'.A4>, <Cell '첫번째 시트'.A5>), (<Cell '첫번째 시
트'.B1>, <Cell '첫번째 시트'.B2>, <Cell '첫번째 시트'.B3>, <Cell '첫번째 시트'.B4>, <Cell '첫번째 시트'.B5>), (<Cell '첫번째 시트'.C1>, <Cell '첫번째 시트'.C2>, <Cell '첫번째 시트'.C3>, <Cell '첫번째 시트'.C4>, <Cell '첫번째 시트'.C5>))
W 열부터 Z 열 선택 ((<Cell '첫번째 시트'.W1>, <Cell '첫번째 시트'.W2>, <Cell '첫번째 시트'.W3>, <Cell '첫번째 시트'.W4>, <Cell '첫번째 시트'.W5>), (<Cell '첫번째 시
트'.X1>, <Cell '첫번째 시트'.X2>, <Cell '첫번째 시트'.X3>, <Cell '첫번째 시트'.X4>, <Cell '첫번째 시트'.X5>), (<Cell '첫번째 시트'.Y1>, <Cell '첫번째 시트'.Y2>, <Cell '첫번째 시트'.Y3>, <Cell '첫번째 시트'.Y4>, <Cell '첫번째 시트'.Y5>), (<Cell '첫번째 시트'.Z1>, <Cell '첫번째 시트'.Z2>, <Cell '첫번째 시트'.Z3>, <Cell '첫번째 시
트'.Z4>, <Cell '첫번째 시트'.Z5>))
5번째 행 선택 (<Cell '첫번째 시트'.A5>, <Cell '첫번째 시트'.B5>, <Cell '첫번째 시트'.C5>, <Cell '첫번째 시트'.D5>, <Cell '첫번째 시트'.E5>, <Cell '첫번째 시트'.F5>,
<Cell '첫번째 시트'.G5>, <Cell '첫번째 시트'.H5>, <Cell '첫번째 시트'.I5>, <Cell '첫번째 시트'.J5>, <Cell '첫번째 시트'.K5>, <Cell '첫번째 시트'.L5>, <Cell '첫번째
시트'.M5>, <Cell '첫번째 시트'.N5>, <Cell '첫번째 시트'.O5>, <Cell '첫번째 시트'.P5>, <Cell '첫번째 시트'.Q5>, <Cell '첫번째 시트'.R5>, <Cell '첫번째 시트'.S5>, <Cell '첫번째 시트'.T5>, <Cell '첫번째 시트'.U5>, <Cell '첫번째 시트'.V5>, <Cell '첫번째 시트'.W5>, <Cell '첫번째 시트'.X5>, <Cell '첫번째 시트'.Y5>, <Cell '첫번째 시트'.Z5>)
5번째 행부터 7번째 행 ((<Cell '첫번째 시트'.A5>, <Cell '첫번째 시트'.B5>, <Cell '첫번째 시트'.C5>, <Cell '첫번째 시트'.D5>, <Cell '첫번째 시트'.E5>, <Cell '첫번째 시
트'.F5>, <Cell '첫번째 시트'.G5>, <Cell '첫번째 시트'.H5>, <Cell '첫번째 시트'.I5>, <Cell '첫번째 시트'.J5>, <Cell '첫번째 시트'.K5>, <Cell '첫번째 시트'.L5>, <Cell
'첫번째 시트'.M5>, <Cell '첫번째 시트'.N5>, <Cell '첫번째 시트'.O5>, <Cell '첫번째 시트'.P5>, <Cell '첫번째 시트'.Q5>, <Cell '첫번째 시트'.R5>, <Cell '첫번째 시트'.S5>, <Cell '첫번째 시트'.T5>, <Cell '첫번째 시트'.U5>, <Cell '첫번째 시트'.V5>, <Cell '첫번째 시트'.W5>, <Cell '첫번째 시트'.X5>, <Cell '첫번째 시트'.Y5>, <Cell '첫번
째 시트'.Z5>), (<Cell '첫번째 시트'.A6>, <Cell '첫번째 시트'.B6>, <Cell '첫번째 시트'.C6>, <Cell '첫번째 시트'.D6>, <Cell '첫번째 시트'.E6>, <Cell '첫번째 시트'.F6>, <Cell '첫번째 시트'.G6>, <Cell '첫번째 시트'.H6>, <Cell '첫번째 시트'.I6>, <Cell '첫번째 시트'.J6>, <Cell '첫번째 시트'.K6>, <Cell '첫번째 시트'.L6>, <Cell '첫번째
시트'.M6>, <Cell '첫번째 시트'.N6>, <Cell '첫번째 시트'.O6>, <Cell '첫번째 시트'.P6>, <Cell '첫번째 시트'.Q6>, <Cell '첫번째 시트'.R6>, <Cell '첫번째 시트'.S6>, <Cell '첫번째 시트'.T6>, <Cell '첫번째 시트'.U6>, <Cell '첫번째 시트'.V6>, <Cell '첫번째 시트'.W6>, <Cell '첫번째 시트'.X6>, <Cell '첫번째 시트'.Y6>, <Cell '첫번째 시트'.Z6>), (<Cell '첫번째 시트'.A7>, <Cell '첫번째 시트'.B7>, <Cell '첫번째 시트'.C7>, <Cell '첫번째 시트'.D7>, <Cell '첫번째 시트'.E7>, <Cell '첫번째 시트'.F7>, <Cell '첫번째 시트'.G7>, <Cell '첫번째 시트'.H7>, <Cell '첫번째 시트'.I7>, <Cell '첫번째 시트'.J7>, <Cell '첫번째 시트'.K7>, <Cell '첫번째 시트'.L7>, <Cell '첫번째 시트'.M7>, <Cell '첫번째 시트'.N7>, <Cell '첫번째 시트'.O7>, <Cell '첫번째 시트'.P7>, <Cell '첫번째 시트'.Q7>, <Cell '첫번째 시트'.R7>, <Cell '첫번째 시트'.S7>, <Cell '첫번
째 시트'.T7>, <Cell '첫번째 시트'.U7>, <Cell '첫번째 시트'.V7>, <Cell '첫번째 시트'.W7>, <Cell '첫번째 시트'.X7>, <Cell '첫번째 시트'.Y7>, <Cell '첫번째 시트'.Z7>))
25번째 행부터 27번째 행 ((<Cell '첫번째 시트'.A25>, <Cell '첫번째 시트'.B25>, <Cell '첫번째 시트'.C25>, <Cell '첫번째 시트'.D25>, <Cell '첫번째 시트'.E25>, <Cell '첫
번째 시트'.F25>, <Cell '첫번째 시트'.G25>, <Cell '첫번째 시트'.H25>, <Cell '첫번째 시트'.I25>, <Cell '첫번째 시트'.J25>, <Cell '첫번째 시트'.K25>, <Cell '첫번째 시트
'.L25>, <Cell '첫번째 시트'.M25>, <Cell '첫번째 시트'.N25>, <Cell '첫번째 시트'.O25>, <Cell '첫번째 시트'.P25>, <Cell '첫번째 시트'.Q25>, <Cell '첫번째 시트'.R25>, <Cell '첫번째 시트'.S25>, <Cell '첫번째 시트'.T25>, <Cell '첫번째 시트'.U25>, <Cell '첫번째 시트'.V25>, <Cell '첫번째 시트'.W25>, <Cell '첫번째 시트'.X25>, <Cell '첫
번째 시트'.Y25>, <Cell '첫번째 시트'.Z25>), (<Cell '첫번째 시트'.A26>, <Cell '첫번째 시트'.B26>, <Cell '첫번째 시트'.C26>, <Cell '첫번째 시트'.D26>, <Cell '첫번째 시
트'.E26>, <Cell '첫번째 시트'.F26>, <Cell '첫번째 시트'.G26>, <Cell '첫번째 시트'.H26>, <Cell '첫번째 시트'.I26>, <Cell '첫번째 시트'.J26>, <Cell '첫번째 시트'.K26>, <Cell '첫번째 시트'.L26>, <Cell '첫번째 시트'.M26>, <Cell '첫번째 시트'.N26>, <Cell '첫번째 시트'.O26>, <Cell '첫번째 시트'.P26>, <Cell '첫번째 시트'.Q26>, <Cell '
첫번째 시트'.R26>, <Cell '첫번째 시트'.S26>, <Cell '첫번째 시트'.T26>, <Cell '첫번째 시트'.U26>, <Cell '첫번째 시트'.V26>, <Cell '첫번째 시트'.W26>, <Cell '첫번째 시
트'.X26>, <Cell '첫번째 시트'.Y26>, <Cell '첫번째 시트'.Z26>), (<Cell '첫번째 시트'.A27>, <Cell '첫번째 시트'.B27>, <Cell '첫번째 시트'.C27>, <Cell '첫번째 시트'.D27>, <Cell '첫번째 시트'.E27>, <Cell '첫번째 시트'.F27>, <Cell '첫번째 시트'.G27>, <Cell '첫번째 시트'.H27>, <Cell '첫번째 시트'.I27>, <Cell '첫번째 시트'.J27>, <Cell
'첫번째 시트'.K27>, <Cell '첫번째 시트'.L27>, <Cell '첫번째 시트'.M27>, <Cell '첫번째 시트'.N27>, <Cell '첫번째 시트'.O27>, <Cell '첫번째 시트'.P27>, <Cell '첫번째
시트'.Q27>, <Cell '첫번째 시트'.R27>, <Cell '첫번째 시트'.S27>, <Cell '첫번째 시트'.T27>, <Cell '첫번째 시트'.U27>, <Cell '첫번째 시트'.V27>, <Cell '첫번째 시트'.W27>, <Cell '첫번째 시트'.X27>, <Cell '첫번째 시트'.Y27>, <Cell '첫번째 시트'.Z27>))
5. Worksheet.iter_rows()
# 지정한 범위의 행 반환
row_num = 10 # 최대 행의 값으로 삽입할 변수 테스트
for row in ws.iter_rows(min_row=2, min_col=2, max_col=5, max_row=row_num): #읽어올 최소, 최대 행 및 열 지정, 정수형 변수도 입력 가능
for cell in row:
print(f"셀 {cell} 의 값은 {cell.value}") # 셀 정보와 값 출력
- 결과
#행을 기준으로 열을 읽어 나감
셀 <Cell '첫번째 시트'.B2> 의 값은 87
셀 <Cell '첫번째 시트'.C2> 의 값은 45
셀 <Cell '첫번째 시트'.D2> 의 값은 54
셀 <Cell '첫번째 시트'.E2> 의 값은 38
셀 <Cell '첫번째 시트'.B3> 의 값은 40
셀 <Cell '첫번째 시트'.C3> 의 값은 24
셀 <Cell '첫번째 시트'.D3> 의 값은 36
셀 <Cell '첫번째 시트'.E3> 의 값은 96
셀 <Cell '첫번째 시트'.B4> 의 값은 38
셀 <Cell '첫번째 시트'.C4> 의 값은 26
셀 <Cell '첫번째 시트'.D4> 의 값은 79
셀 <Cell '첫번째 시트'.E4> 의 값은 69
셀 <Cell '첫번째 시트'.B5> 의 값은 27
셀 <Cell '첫번째 시트'.C5> 의 값은 59
셀 <Cell '첫번째 시트'.D5> 의 값은 53
셀 <Cell '첫번째 시트'.E5> 의 값은 87
셀 <Cell '첫번째 시트'.B6> 의 값은 71
셀 <Cell '첫번째 시트'.C6> 의 값은 25
셀 <Cell '첫번째 시트'.D6> 의 값은 80
셀 <Cell '첫번째 시트'.E6> 의 값은 20
셀 <Cell '첫번째 시트'.B7> 의 값은 39
셀 <Cell '첫번째 시트'.C7> 의 값은 7
셀 <Cell '첫번째 시트'.D7> 의 값은 30
셀 <Cell '첫번째 시트'.E7> 의 값은 26
셀 <Cell '첫번째 시트'.B8> 의 값은 93
셀 <Cell '첫번째 시트'.C8> 의 값은 46
셀 <Cell '첫번째 시트'.D8> 의 값은 81
셀 <Cell '첫번째 시트'.E8> 의 값은 90
셀 <Cell '첫번째 시트'.B9> 의 값은 73
셀 <Cell '첫번째 시트'.C9> 의 값은 83
셀 <Cell '첫번째 시트'.D9> 의 값은 25
셀 <Cell '첫번째 시트'.E9> 의 값은 40
셀 <Cell '첫번째 시트'.B10> 의 값은 47
셀 <Cell '첫번째 시트'.C10> 의 값은 18
셀 <Cell '첫번째 시트'.D10> 의 값은 98
셀 <Cell '첫번째 시트'.E10> 의 값은 94
6. Worksheet.iter_cols()
# 지정한 범위의 열 반환
row_num = 5
col_num = 5
for col in ws.iter_cols(min_row=1, min_col=1, max_row=row_num, max_col=col_num):
for cell in col:
print(f"셀 {cell} 의 값은 {cell.value}")
- 결과
#열을 기준으로 행을 읽어 나감
셀 <Cell '첫번째 시트'.A1> 의 값은 97
셀 <Cell '첫번째 시트'.A2> 의 값은 85
셀 <Cell '첫번째 시트'.A3> 의 값은 36
셀 <Cell '첫번째 시트'.A4> 의 값은 32
셀 <Cell '첫번째 시트'.A5> 의 값은 60
셀 <Cell '첫번째 시트'.B1> 의 값은 46
셀 <Cell '첫번째 시트'.B2> 의 값은 40
셀 <Cell '첫번째 시트'.B3> 의 값은 47
셀 <Cell '첫번째 시트'.B4> 의 값은 27
셀 <Cell '첫번째 시트'.B5> 의 값은 2
셀 <Cell '첫번째 시트'.C1> 의 값은 71
셀 <Cell '첫번째 시트'.C2> 의 값은 2
셀 <Cell '첫번째 시트'.C3> 의 값은 54
셀 <Cell '첫번째 시트'.C4> 의 값은 36
셀 <Cell '첫번째 시트'.C5> 의 값은 75
셀 <Cell '첫번째 시트'.D1> 의 값은 64
셀 <Cell '첫번째 시트'.D2> 의 값은 30
셀 <Cell '첫번째 시트'.D3> 의 값은 2
셀 <Cell '첫번째 시트'.D4> 의 값은 1
셀 <Cell '첫번째 시트'.D5> 의 값은 79
셀 <Cell '첫번째 시트'.E1> 의 값은 6
셀 <Cell '첫번째 시트'.E2> 의 값은 13
셀 <Cell '첫번째 시트'.E3> 의 값은 9
셀 <Cell '첫번째 시트'.E4> 의 값은 1
셀 <Cell '첫번째 시트'.E5> 의 값은 5
7. 파일의 모든 행과 열 출력, Worksheet.rows 속성
import random
for r in range(1,5):
for c in range(1,5):
ws.cell(row=r, column=c, value = random.randrange(1,100))
print(list(ws.rows)) # 리스트형식으로 출력
- 결과
[(<Cell '첫번째 시트'.A1>, <Cell '첫번째 시트'.B1>, <Cell '첫번째 시트'.C1>, <Cell '첫번째 시트'.D1>), (<Cell '첫번째 시트'.A2>, <Cell '첫번째 시트'.B2>, <Cell '첫번
째 시트'.C2>, <Cell '첫번째 시트'.D2>), (<Cell '첫번째 시트'.A3>, <Cell '첫번째 시트'.B3>, <Cell '첫번째 시트'.C3>, <Cell '첫번째 시트'.D3>), (<Cell '첫번째 시트'.A4>, <Cell '첫번째 시트'.B4>, <Cell '첫번째 시트'.C4>, <Cell '첫번째 시트'.D4>)]
Worksheet.columns 속성
import random
for r in range(1,5):
for c in range(1,5):
ws.cell(row=r, column=c, value = random.randrange(1,100))
print(list(ws.columns)) # 리스트형식으로 출력
- 결과
[(<Cell '첫번째 시트'.A1>, <Cell '첫번째 시트'.A2>, <Cell '첫번째 시트'.A3>, <Cell '첫번째 시트'.A4>), (<Cell '첫번째 시트'.B1>, <Cell '첫번째 시트'.B2>, <Cell '첫번
째 시트'.B3>, <Cell '첫번째 시트'.B4>), (<Cell '첫번째 시트'.C1>, <Cell '첫번째 시트'.C2>, <Cell '첫번째 시트'.C3>, <Cell '첫번째 시트'.C4>), (<Cell '첫번째 시트'.D1>, <Cell '첫번째 시트'.D2>, <Cell '첫번째 시트'.D3>, <Cell '첫번째 시트'.D4>)]
8. 값만 출력
for row in ws.values:
for value in row:
print(value)
- 결과
90
93
51
17
40
55
4
35
10
28
86
79
15
23
90
45
'프로그래밍 > Python' 카테고리의 다른 글
Python_openpyxl_엑셀_04_행과 열, 범위 이동 (0) | 2021.02.02 |
---|---|
Python_openpyxl_엑셀_03_데이터 응용 (0) | 2021.02.01 |
Python_openpyxl_엑셀_01_시트 관련 (0) | 2021.01.28 |
Python_05_for문 (0) | 2021.01.25 |
Python_04_if문 (0) | 2021.01.25 |
댓글