YouTube 나도코딩님의 동영상을 보면서 공부한 내용입니다.
부족한 내용이나 잘못된 내용은 댓글남겨주시면 감사하겠습니다!
출처 : https://www.youtube.com/channel/UC7iAOLiALt2rtMVAWWl4pnw
1. 이미 만들어진 파일 불러와서 데이터 읽기
from openpyxl import load_workbook # 파일불러오기
wb = load_workbook("sample.xlsx") # sample.xlsx 파일에서 wb을 불러옴
ws = wb.active # 활성화된 Sheet
# cell데이터 불러오기
for x in range(1, 11):
for y in range(1,11):
print(ws.cell(row=x, column=y).value, end=" ") #1 2 3 4
print() # 줄바꿈

# cell 갯수를 모를 때
for x in range(1, ws.max_row + 1): # 최대 row수 = 10인데 +1을 해야 그 직전까지 출력됨
for y in range(1, ws.max_column + 1):
print(ws.cell(row=x, column=y).value, end=" ") # 1 2 3 4
print() # 줄바꿈

# 4_open.file.py
from openpyxl import load_workbook # 파일불러오기
wb = load_workbook("sample.xlsx") # sample.xlsx 파일에서 wb을 불러옴
ws = wb.active # 활성화된 Sheet
# # cell데이터 불러오기
# for x in range(1, 11):
# for y in range(1,11):
# print(ws.cell(row=x, column=y).value, end=" ") #1 2 3 4
# print() # 줄바꿈
#cell 갯수를 모를 때
for x in range(1, ws.max_row + 1): # 최대 row수 = 10인데 +1을 해야 그 직전까지 출력됨
for y in range(1, ws.max_column + 1):
print(ws.cell(row=x, column=y).value, end=" ") # 1 2 3 4
print() # 줄바꿈
5. 셀영역_1
# 1중씩 데이터 넣기
from openpyxl import Workbook
from random import *
wb = Workbook()
ws = wb.active
# 1줄씩 데이터 넣기 - 리스트나 튜플 형식으로
ws.append(["번호", "영어", "수학"]) #A, B, C
for i in range(1, 11): #10개 데이터 넣기
ws.append([i, randint(0,100), randint(0,100)])
wb.save("sample_5.xlsx")

# 지정된 열의 column가져오기 - ws["해당열"]
col_B = ws["B"]
print(col_B)
from openpyxl import Workbook
from random import *
wb = Workbook()
ws = wb.active
# 1줄씩 데이터 넣기 - 리스트나 튜플 형식으로
ws.append(["번호", "영어", "수학"]) #A, B, C
for i in range(1, 11): #10개 데이터 넣기
ws.append([i, randint(0,100), randint(0,100)])
# B열의 영어column만 가지고 오기
col_B = ws["B"]
print(col_B)
wb.save("sample_5.xlsx")

# 특정 열의 셀 데이터 가져오기
from openpyxl import Workbook
from random import *
wb = Workbook()
ws = wb.active
# 1줄씩 데이터 넣기 - 리스트나 튜플 형식으로
ws.append(["번호", "영어", "수학"]) #A, B, C
for i in range(1, 11): #10개 데이터 넣기
ws.append([i, randint(0,100), randint(0,100)])
# 특정 열의 셀 데이터 가져오기
col_B = ws["B"]
for cell in col_B:
print(cell.value)
wb.save("sample_5.xlsx")

# 특정 여러 열들 데이터 가져오기 - ws["여기부터:여기까지"]
col_range = ws["B:C"] # B부터 C
for cols in col_range:
for cell in cols:
print(cell.value)

# 특정 행 가져오기 - ws[행번호]
row_title = ws[1]
for cell in row_title:
print(cell.value)

# 특정 여러 행 가져오기
row_range = ws[2:6]
# 1번째 줄인 title을 제외하고 2번째 줄에서 6번째 줄까지 가지고 오기 2,3,4,5,6가져옴.
for rows in row_range:
for cell in rows:
print(cell.value, end=" ")
print()

# 행의 번호를 모를 경우
row_range = ws[2:ws.max_row] # 2번째 줄부터 마지막 줄까지
for rows in row_range:
for cell in rows:
print(cell.value, end=" ")
print()

# 셀 정보(번호) 가져오기
row_range = ws[2:ws.max_row] # 2번째 줄부터 마지막 줄까지
for rows in row_range:
for cell in rows:
print(cell.coordinate, end=" ")
print()

# 행이나 열 번호가 클 경우 도움
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)
#A250을 A / 250 으로 끊어줘서 행이나 열 번호가 클 때 도움
print(xy, end=" ")
print()

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)
#A250을 A / 250 으로 끊어줘서 행이나 열 번호가 클 때 도움
print(xy[0], end="") # A
print(xy[1], end=" ") # 1
# 위 두줄과 같음 print(cell.coordinate, end=" ")
print()

# 5_cell_range.py
from openpyxl import Workbook
from random import *
wb = Workbook()
ws = wb.active
# 1줄씩 데이터 넣기 - 리스트나 튜플 형식으로
ws.append(["번호", "영어", "수학"]) #A, B, C
for i in range(1, 11): #10개 데이터 넣기
ws.append([i, randint(0,100), randint(0,100)])
# B열의 영어column만 가지고 오기
# col_B = ws["B"]
# print(col_B)
# 특정 열의 셀 데이터 가져오기
# for cell in col_B:
# print(cell.value)
# 영어와 수학 컬럼 같이 가져오기
# col_range = ws["B:C"] # B부터 C
# for cols in col_range:
# for cell in cols:
# print(cell.value)
# ROW도 가능 - 첫번째 행 가져오기
# row_title = ws[1]
# for cell in row_title:
# print(cell.value)
# 여러 줄의 행 가져오기
# row_range = ws[2:6]
# 1번째 줄인 title을 제외하고 2번째 줄에서 6번째 줄까지 가지고 오기 2,3,4,5,6가져옴.
# for rows in row_range:
# for cell in rows:
# print(cell.value, end=" ")
# print()
# 행의 번호를 잘 모를 때
# row_range = ws[2:ws.max_row] # 2번째 줄부터 마지막 줄까지
# for rows in row_range:
# for cell in rows:
# print(cell.value, end=" ")
# print()
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:
# print(cell.coordinate, end=" ")
xy = coordinate_from_string(cell.coordinate)
#A250을 A / 250 으로 끊어줘서 행이나 열 번호가 클 때 도움
# print(xy, end=" ")
print(xy[0], end="") # A
print(xy[1], end=" ") # 1
# 위 두줄과 같음 print(cell.coordinate, end=" ")
print()
wb.save("sample_5.xlsx")
# 전체 row의 셀 정보
# 전체 rows - 모든 줄
#print(ws.rows)로 하면 알수 없는 정보가 뜸
print(tuple(ws.rows)) # 괄호 묶음 단위가 행, 밑 두줄이랑 같음
for row in tuple(ws.rows):
print(row)

# 인덱스 이용하여 값 가져오기
# 일부 row
for row in tuple(ws.rows):
print(row[1].value) # 인덱스1에 있는 값 찍어옴
# 다른 방법
for row in ws.iter_rows(): # 전체 row 반복해서 가져옴
print(row[1].value)

# 타이틀만 출력
# 타이틀만 출력
for column in tuple(ws.columns):
print(column[0].value)
# 다른 방법
for column in ws.iter_cols(): #전체 row
print(column[0].value)

# 지정한 부분 출력
# 2번째 줄부터 11번째 줄까지, 2번째 열부터 3번째 열까지
for row in ws.iter_rows(min_row=2, max_row=11, min_col=2, max_col=3):
print(row[0].value, row[1].value)

# 데이터모양 출력 확인
# 데이터 출력되는 모양 확인 - 범위 지정안할 시 min젤 작은, max젤 큰 자동으로 됨.
# 위에서 아래로
for row in ws.iter_rows(min_row=2, max_row=11, min_col=2, max_col=3):
print(row)
# 왼쪽에서 오른쪽으로
for col in ws.iter_cols(min_row=1, max_row=5, min_col=1, max_col=3):
print(col)

# 5_cell_range.py
from openpyxl import Workbook
from random import *
wb = Workbook()
ws = wb.active
# 1줄씩 데이터 넣기 - 리스트나 튜플 형식으로
ws.append(["번호", "영어", "수학"]) #A, B, C
for i in range(1, 11): #10개 데이터 넣기
ws.append([i, randint(0,100), randint(0,100)])
# B열의 영어column만 가지고 오기
# col_B = ws["B"]
# print(col_B)
# 특정 열의 셀 데이터 가져오기
# for cell in col_B:
# print(cell.value)
# 영어와 수학 컬럼 같이 가져오기
# col_range = ws["B:C"] # B부터 C
# for cols in col_range:
# for cell in cols:
# print(cell.value)
# ROW도 가능 - 첫번째 행 가져오기
# row_title = ws[1]
# for cell in row_title:
# print(cell.value)
# 여러 줄의 행 가져오기
# row_range = ws[2:6]
# 1번째 줄인 title을 제외하고 2번째 줄에서 6번째 줄까지 가지고 오기 2,3,4,5,6가져옴.
# for rows in row_range:
# for cell in rows:
# print(cell.value, end=" ")
# print()
# 행의 번호를 잘 모를 때
# row_range = ws[2:ws.max_row] # 2번째 줄부터 마지막 줄까지
# for rows in row_range:
# for cell in rows:
# print(cell.value, end=" ")
# print()
# 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:
# # print(cell.coordinate, end=" ")
# xy = coordinate_from_string(cell.coordinate)
# #A250을 A / 250 으로 끊어줘서 행이나 열 번호가 클 때 도움
# # print(xy, end=" ")
# print(xy[0], end="") # A
# print(xy[1], end=" ") # 1
# # 위 두줄과 같음 print(cell.coordinate, end=" ")
# print()
# 전체 rows - 모든 줄
#print(ws.rows)로 하면 알수 없는 정보가 뜸
# print(tuple(ws.rows)) # 괄호 묶음 단위가 행, 밑 두줄이랑 같음
# for row in tuple(ws.rows):
# print(row)
# 일부 row
# for row in tuple(ws.rows):
# print(row[1].value) # 인덱스1에 있는 값 찍어옴
# 다른 방법
# print()
# for row in ws.iter_rows(): # 전체 row 반복해서 가져옴
# print(row[1].value)
# 타이틀만 출력
# for column in tuple(ws.columns):
# print(column[0].value)
# 다른 방법
# for column in ws.iter_cols(): #전체 row
# print(column[0].value)
# 2번째 줄부터 11번째 줄까지, 2번째 열부터 3번째 열까지
# for row in ws.iter_rows(min_row=2, max_row=11, min_col=2, max_col=3):
# print(row[0].value, row[1].value)
# 데이터 출력되는 모양 확인 - 범위 지정안할 시 min젤 작은, max젤 큰 자동으로 됨.
# 위에서 아래로
# for row in ws.iter_rows(min_row=2, max_row=11, min_col=2, max_col=3):
# print(row)
# 왼쪽에서 오른쪽으로
# for col in ws.iter_cols(min_row=1, max_row=5, min_col=1, max_col=3):
# print(col)
wb.save("sample_5.xlsx")
7. 검색
# 영어 성적이 80 점 이상인 학생 선별
from openpyxl import load_workbook
wb = load_workbook("sample_5.xlsx")
ws = wb.active
# 영어 성적이 80점 이상인 학생 선별
for row in ws.iter_rows(min_row=2):
# 번호, 영어, 수학
if int(row[1].value) > 80: # 값을 비교하기 위해 int사용
print(row[0].value, "번 학생은 영어 천재")
wb.save("sample_modified.xlsx")

# 값 변경
# 값 변경
for row in ws.iter_rows(max_row=1):
for cell in row:
if cell.value == "영어":
cell.value = "컴퓨터"

# 6_search.py
from openpyxl import load_workbook
wb = load_workbook("sample_5.xlsx")
ws = wb.active
# 영어 성적이 80점 이상인 학생 선별
for row in ws.iter_rows(min_row=2):
# 번호, 영어, 수학
if int(row[1].value) > 80: # 값을 비교하기 위해 int사용
print(row[0].value, "번 학생은 영어 천재")
# 값 변경
for row in ws.iter_rows(max_row=1):
for cell in row:
if cell.value == "영어":
cell.value = "컴퓨터"
wb.save("sample_modified.xlsx")'Tools > RPA' 카테고리의 다른 글
| [RPA] 엑셀 - 차트, 셀스타일 (0) | 2021.07.28 |
|---|---|
| [RPA] 엑셀 - 삽입, 삭제, 이동 (0) | 2021.07.27 |
| [RPA] 엑셀 자동화 - 시트생성, 시트탭 색상변경, 시트내용 복사, 데이터 입력(반복문), 데이터 가져오기 (0) | 2021.07.26 |
| [UiPath] Activity - if, switch, Flow Decision,While, Do While, Parallel, Pick / PickBranch (0) | 2021.07.03 |
| [Uipath] Activity - Click, GetText, SetText, SendHotKey, InputDialog (0) | 2021.07.02 |