Python
Python RPA(업무자동화) 개념 및 실습 - 엑셀(2)
developers developing
2022. 9. 22. 12:00
RPA(Robotic Process Automation)
- 웹, 윈도우, 어플리케이션(엑셀 등)을 사전에 설정한 시나리오에 따라 자동적으로 작동하여 수작업을 최소화하는 일련의 프로세스
- RPA 사용 소프트웨어
- Uipath, BluePrism, Automation Anywhere, WinAutomation
- RPA 라이브러리
- pyautogui, pyperclip, selenium
RPAbasic\excel 폴더 - 5_range.py
from openpyxl import Workbook
import random
wb = Workbook()
ws = wb.active
# 한 줄 씩 데이터 삽입 - 리스트 이용
ws.append(["번호", "영어", "수학"]) # 가장 첫줄 타이틀 입력
# 임의로 영어,수학 점수 입력
for i in range(1, 11):
ws.append([i, random.randint(0, 100), random.randint(0, 100)])
# 첫번째 행 가져오기
# 방법 1)
print("방법 1)", ws["A1"].value, ws["B1"].value, ws["C1"].value)
# 방법 2)
print("방법 2)")
for i in range(1, 2):
for j in range(1, 4):
print(ws.cell(i, j).value, end=" ")
# 방법 3)
print("방법 3)")
for j in range(1, 4):
print(ws.cell(1, j).value, end=" ")
print()
# 방법 4)
first_row = ws[1]
print("방법 4)")
for cell in first_row:
print(cell.value, end=" ")

# 2~6번 행 가져오기
row_range = ws[2:6] # 마지막 번호 6 포함
for rows in row_range:
for cell in rows:
print(cell.value, end=" ")
print()

# 3행부터 마지막까지 가져오기
row_range = ws[3 : ws.max_row] # 마지막 번호 6 포함
for rows in row_range:
for cell in rows:
print(cell.value, end=" ")
print()

# iter_rows() / iter_cols(): 전체 rows, cols 함수
# C행을 가지고 나옴.
for row in ws.iter_rows():
print(row[2].value)
for col in ws.iter_cols():
print(col[2].value)
wb.save("./RPAbasic/excel/range.xlsx")


# 2차원
rows = [
["이름", "생년월일"],
["홍길동", "801020"],
["성춘향", "811020"],
["김지원", "860920"],
["남주혁", "880705"],
]
for row in rows:
ws.append(row)
RPAbasic\excel 폴더 - 6_search.py
from openpyxl import load_workbook
wb = load_workbook("./RPAbasic/excel/range.xlsx")
ws = wb.active
# 제목 행 제거 : min_row
# 타이틀 지우기. 1번 행은 타이틀, min_row= 어디부터 읽기. 2행부터 읽어오기
for row in ws.iter_rows(min_row=2):
print(row[0].value, row[1].value, row[2].value)
# 영어 점수가 80 이상인 것만 출력.
for row in ws.iter_rows(min_row=2):
if row[1].value > 80:
print(row[0].value, row[1].value, row[2].value)

# 셀 안에 '영어'라는 문자가 입력된 셀이 있는 경우 '컴퓨터' 변경
for row in ws.iter_rows(max_row=1):
for cell in row:
if cell.value == "영어":
cell.value = "컴퓨터"
wb.save("./RPAbasic/excel/range.xlsx")

RPAbasic\excel 폴더 - 7_insert.py
행, 열 삽입
from openpyxl import load_workbook
wb = load_workbook("./RPAbasic/excel/range.xlsx")
ws = wb.active
# 행 삽입
ws.insert_rows(8)
# 8번 위치부터 5행 삽입
ws.insert_rows(8, 5)
# 열 삽입
ws.insert_cols(2)
# 2번 컬럼부터 3개
ws.insert_cols(2, 3)
wb.save("./RPAbasic/excel/range.xlsx")
RPAbasic\excel 폴더 - 8_delete.py
from openpyxl import load_workbook
wb = load_workbook("./RPAbasic/excel/range.xlsx")
ws = wb.active
# 특정 행 삭제
ws.delete_rows(8)
ws.delete_rows(8, 3)
# 특정 열 삭제
ws.delete_cols(1, 2)
wb.save("./RPAbasic/excel/range_delete.xlsx")
range.xlsx 파일을 읽어서 range_delete.xlsx로 저장
RPAbasic\excel 폴더 - 9_move.py
5_range.py 다시 실행
from openpyxl import load_workbook
wb = load_workbook("./RPAbasic/excel/range.xlsx")
ws = wb.active
# 이동시킬 범위잡기
# move_range(cell_range, rows, cols)
# rows는 그대로 두고, cols는 오른쪽 옆으로 한칸
# - 를 주게 되면 왼쪽/ 위로 이동
ws.move_range("B1:C11", rows=0, cols=1)
wb.save("./RPAbasic/excel/range_move.xlsx")
range.xlsx 파일을 읽어서 range_move.xlsx로 저장
RPAbasic\excel 폴더 - 10_chart.py
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference, LineChart
wb = load_workbook("./RPAbasic/excel/range.xlsx")
ws = wb.active
# 막대 차트
# 차트 범위 설정
bar_value = Reference(ws, min_row=2, max_row=11, min_col=2, max_col=3)
# 차트 종류 설정
bar_chart = BarChart()
bar_chart.add_data(bar_value)
# 차트 삽입
ws.add_chart(bar_chart, "E1")
# 선 차트 : LineChart
line_value = Reference(ws, min_row=2, max_row=11, min_col=2, max_col=3)
# 차트 종류 설정
line_chart = LineChart()
line_chart.add_data(line_value)
# 차트 꾸미기
line_chart.title = "성적표"
line_chart.style = 20
line_chart.y_axis.title = "점수"
line_chart.x_axis.title = "번호"
# 차트 삽입
ws.add_chart(line_chart, "E15")
wb.save("./RPAbasic/excel/range_chart.xlsx")
