[RPA] 엑셀 자동화 - 시트생성, 시트탭 색상변경, 시트내용 복사, 데이터 입력(반복문), 데이터 가져오기

2021. 7. 26. 00:11·Tools/RPA

 

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
'Tools/RPA' 카테고리의 다른 글
  • [RPA] 엑셀 - 삽입, 삭제, 이동
  • [RPA] 엑셀자동화 - 파일불러와서 데이터 추출, 셀 영역, 찾기
  • [UiPath] Activity - if, switch, Flow Decision,While, Do While, Parallel, Pick / PickBranch
  • [Uipath] Activity - Click, GetText, SetText, SendHotKey, InputDialog
min_sol
min_sol
  • min_sol
    비글개발연구소🐾
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (278)
      • Programming (128)
        • Algorithm (52)
        • JAVA (40)
        • GIS (5)
        • PyQt (10)
        • C# (11)
        • Mobile (6)
        • AI (4)
      • Backend (36)
        • Spring (14)
        • JSP (11)
        • Network (5)
      • Frontend (29)
        • React (11)
        • Vue (13)
        • Next.js (4)
      • Database (10)
        • PostgreSQL (1)
        • Oracle (8)
        • Elasticsearch (1)
      • DevOps (8)
        • Linux (7)
        • Mac (1)
      • Tools (31)
        • IntelliJ (1)
        • GitHub (10)
        • RPA (20)
      • Security (9)
      • etc (21)
        • ERROR (5)
        • 세미나 | 교육 (10)
        • 자격증 (1)
        • 일상 (2)
        • 2021 (2)
  • 인기 글

  • 태그

    spring
    스윙
    알고리즘
    계산기
    백준
    이클립스
    VUE
    명품자바에센셜
    자동화
    Java
    연습문제
    vue.js
    PyQt5
    PyQt
    코딩테스트
    자바
    jsp
    생능출판
    RPA
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[RPA] 엑셀 자동화 - 시트생성, 시트탭 색상변경, 시트내용 복사, 데이터 입력(반복문), 데이터 가져오기
상단으로

티스토리툴바