IT_developers

Python RPA(업무자동화) 개념 및 실습 - 엑셀(2) 본문

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)

 
# 3열을 출력
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)

2차원 배열 샘플

 

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")
Comments