YouTube 나도코딩님의 동영상을 보면서 공부한 내용입니다.
부족한 내용이나 잘못된 내용은 댓글남겨주시면 감사하겠습니다!
출처 : https://www.youtube.com/channel/UC7iAOLiALt2rtMVAWWl4pnw
1. 새엑셀파일 생성후 워크 시트 이름 변경하고 파일 저장
- rpa_basic폴더를 생성후 new project로 클릭
- rpa_basic에서 마우스 오른쪽 하고 new - Directory로 1_excel 생성

- 1_excel에서 마우스 오른쪽 한후 new - file 1_create_file.py생성
- 다음과 같이 작성
from openpyxl import Workbook # openpyxl사용하기 위해서
wb = Workbook() # 엑셀의 새 워크북 생성
ws = wb.active # 현재 활성화된 Sheet가져옴
ws.title = "NadoSheet" # 워크 시트의 이름 변경
wb.save("sample.xlsx") # 파일 저장
wb.close() # 파일 닫기
-> 빨간줄 엄청 많이 뜸 => openpyxl라이브러리 설치가 안 된 상태라.
- 터미널에서 설치
pip install openpyxl

-> 오류들 사라짐
- 실행 -> sample.xlsx 생성

- 파일을 열면 NadoSheet로 시트 이름이 변경되어 있음

2. 현재 활성화된 시트 1번 뒤에 기본이름으로 새로운 시트 생성
1_create_file.py폴더에서 마우스 오른쪽 new -file해서 2_sheet.py로 생성 후 다음과 같이 작성
from openpyxl import Workbook
wb = Workbook() # 새로운 워크북 생성
# wb.active = 현재 활성화 된 시트 가져오기
ws = wb.create_sheet() # 현재 활성화된 시트 1번 뒤에 기본이름으로 새로운 시트 생성
wb.save("samples.xlsx") # 파일 저장
실행 -> samples.xlsx파일 생성됨

기존 sheet뒤에 기본시트인 sheet1가 생성됨

엑셀을 키면 기본시트의 이름은 sheet1로 되어 있길래 궁금해서 4번줄의 코드를 한번 더 적었더니 sheet2가 생성됨
-> 여기서 기존 시트는 sheet이고 생성된 시트는 1,2,3,,이렇게 추가되는 듯

# 시트 탭 색 변경
ws.sheet_properties.tabColor = "" # RGB 형태로 값을 넣어주면 시트 탭 색상 변경
RGB 색 = https://www.w3schools.com/colors/colors_picker.asp?colorhex=ff0000 에서 #뒤에 있는 거 복사해서 ""안에 넣으면 됨.

그럼 이렇게 시트 탭 색 변경되어 있음

여태까지 시트를 생성한 후 시트이름을 변경했음.
# 다음 코드는 지정한 타이틀로 시트 생성 코드
ws1 = wb.create_sheet("YourSheet") # 생성하면서 타이틀 넣어주기 - 주어진 이름으로 sheet생성
기존 시트인 sheet, 첫번째로 생성한 시트인 MySheet, 방금 생성한 YourSheet가 순서대로 생성됨.
만약 MySheet와 YourSheet 사이에 시트를 생성하고 싶다면? -> 인덱스 값 지정
ws2 = wb.create_sheet("NewSheet", 2) # 2번째 인덱스에 시트 생성

# 엑셀 문서안의 모든 시트를 확인하고 싶을 때 -> 워크북.sheetnames
print(wb.sheetnames)

# 시트 안에 있는 내용 복사
# 시트 안에 있는 내용 복사
new_ws["A1"] = "Test" # A1셀의 값을 Test로 입력
target = wb.copy_worksheet(new_ws) # new_ws를 복사해서 target에 저장
target.title = "Copied Sheet" # target의 워크 시트 이름을 copied Sheet로 변경
NewSheet의 A1셀에 Test가 입력되었고 Copied Sheet가 생성되면서 NewSheet의 내용을 복사해옴


2_sheet.py
from openpyxl import Workbook
wb = Workbook() # 새로운 워크북 생성
# wb.active = 현재 활성화 된 시트 가져오기
ws = wb.create_sheet() # 현재 활성화된 시트 1번 뒤에 기본이름으로 새로운 시트 생성
ws.title = "MySheet" # shett이름 변경
ws.sheet_properties.tabColor = "b797e7" # RGB 형태로 값을 넣어주면 시트 탭 색상 변경
# sheet, mysheet, yoursheet 순으로 생성됨.
ws1 = wb.create_sheet("YourSheet") # 생성하면서 타이틀 넣어주기 - 주어진 이름으로 sheet생성
ws2 = wb.create_sheet("NewSheet", 2) # 2번째 인덱스에 시트 생성
# 시트명으로 접근 할 떄 ws1. 접근해도 되지만 다음처럼
new_ws = wb["NewSheet"] # 딕셔너리 형태로 시트에 접근 가능
# new_ws..
# 엑셀 문서안의 모든 시트를 확인하기 위해서는 워크북.sheetnames
print(wb.sheetnames) # 모든 시트 이름 확인
# 시트 안에 있는 내용 복사
new_ws["A1"] = "Test" # A1셀의 값을 Test로 입력
target = wb.copy_worksheet(new_ws) # new_ws를 복사해서 target에 저장
target.title = "Copied Sheet" # target의 워크 시트 이름을 copied Sheet로 변경
wb.save("samples.xlsx") # 파일 저장
3. 시트의 데이터 입력, 셀 값 읽어오기, 반복문 사용해서 데이터 입력
# 데이터 입력 -> ws["셀번호"] = 값
ws["A1"] = 1
ws["A2"] = 2
ws["A3"] = 3
ws["B1"] = 4
ws["B2"] = 5
ws["B3"] = 6

# 셀 값 읽어오기
-> ws.["셀번호"].value
print(ws["A1"]) # A1 셀의 정보를 출력 -> 값이 아닌 셀 객체 정보를 출력
print(ws["A1"].value) # A1셀의 값을 출력
print(ws["A10"].value) # A10셀의 값을 출력 -> 값이 없을 때는 'None'를 출력

-> ws.cell(column=열번호, row=행번호).value)
# column = A, B, C, ... -> A=1, B=2, ...
# row = 1, 2, 3,...
print(ws.cell(column=1, row=1).value) # = ws["A1"].value
print(ws.cell(column=2, row=1).value) # = ws["B1"].value

# 셀 값 바로 입력 -> ws.cell(column=열번호, row=행번호, value=값)
ws.cell(column=3, row=1, value=10) # ws["C1"] = 10

# 셀 값 입력 후 출력
c = ws.cell(column=3, row=1, value=10) # ws["C1"] = 10 을 c에 저장
print(c.value) # ws["C1"].value

# 반복문 사용해 랜덤 데이터 넣기
from random import * # 원래 상단에 넣어야 하는데 이해를 돕기 위해 여기에 삽입
for x in range(1, 11): # 10개 row-행
for y in range (1, 11): # 10개 column-열
ws.cell(row=x, column=y, value=randint(0,100)) # 0~100 사이의 숫자

# 반복문 사용해서 순서대로 값 넣기
index = 1
for x in range(1, 11): # 10개 row-행
for y in range (1, 11): # 10개 column-열
ws.cell(row=x, column=y, value=index) # 좌표값처럼 순서대로 입력됨
index +=1
# 1 2 3 4 5
# 6 7 8 9 10

3_cell.py
from openpyxl import Workbook
wb = Workbook()
ws = wb.active # 현재 활성화된 Sheet가져옴
ws.title = "NadoSheet"
# A1 셀이 1 이라는 값을 입력
ws["A1"] = 1
ws["A2"] = 2
ws["A3"] = 3
ws["B1"] = 4
ws["B2"] = 5
ws["B3"] = 6
# 셀 값 읽어오기
print(ws["A1"]) # A1 셀의 정보를 출력 -> 값이 아닌 셀 객체 정보를 출력
print(ws["A1"].value) # A1셀의 값을 출력
print(ws["A10"].value) # A10셀의 값을 출력 -> 값이 없을 때는 'None'를 출력
# column = A, B, C, ... -> A=1, B=2, ...
# row = 1, 2, 3,...
print(ws.cell(column=1, row=1).value) # = ws["A1"].value
print(ws.cell(column=2, row=1).value) # = ws["B1"].value
# 값 바로 입력
c = ws.cell(column=3, row=1, value=10) # ws["C1"] = 10 을 c에 저장
print(c.value) # ws["C1"].value
# 반복문 사용해 랜덤 데이터 넣기
from random import * # 원래 상단에 넣어야 하는데 이해를 돕기 위해 여기에 삽입
'''
for x in range(1, 11): # 10개 row-행
for y in range (1, 11): # 10개 column-열
ws.cell(row=x, column=y, value=randint(0,100)) # 0~100 사이의 숫자
'''
index = 1
for x in range(1, 11): # 10개 row-행
for y in range (1, 11): # 10개 column-열
ws.cell(row=x, column=y, value=index) # 좌표값처럼 순서대로 입력됨
index +=1
# 1 2 3 4 5
# 6 7 8 9 10
wb.save("sample.xlsx")'Tools > RPA' 카테고리의 다른 글
| [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 |
| [UiPath] 변수와 자료형 (0) | 2021.07.02 |