[excel - python - uipath] 엑셀 자동화에 대해서 알아보자(5-2)

루까까·2023년 8월 14일
0

Excel 자동화

목록 보기
10/25

이번 시간에는 Copy/Paste Range activity를 python 코드로 구현해보는 시간을 가져보자.
(uipath Copy/Paste Range activity 알아보기)

1. 전체 코드

def copy_paste_range(file_name1: str, sheet_name1: [str, int], file_name2: str, sheet_name2: [str, int],
                     r_range: str = None, w_range: str = None, header_y_n: bool = True, only_data: bool = True,
                     change: bool = False):

    if change:
        df = read_range(file_name1, sheet_name1, r_range, False, only_data)
        df = df.transpose()
        write_range(file_name2, df, sheet_name2, w_range, False)
    else:
        df = read_range(file_name1, sheet_name1, r_range, header_y_n, only_data)
        write_range(file_name2, df, sheet_name2, w_range, header_y_n)

2. 코드 설명

2-1. 함수 인자 설명

def copy_paste_range(file_name1: str, sheet_name1: [str, int], file_name2: str, sheet_name2: [str, int],
                     r_range: str = None, w_range: str = None, header_y_n: bool = True, only_data: bool = True,
                     change: bool = False):
  • file_name1은 호출 엑셀명 기입
  • sheet_name1은 호출 엑셀 시트명 기입(위치도 입력 가능)
  • file_name2는 기입 엑셀명 기입
  • sheet_name2는 기입 엑셀 시트명 기입(위치도 입력 가능)
  • r_range 읽고자 하는 범위(호출 엑셀 시트안에 위치 없으면 해당 시트로 할당)
  • w_range 쓰고자 하는 범위(기입 엑셀 시트안에 위치 없으면 A1으로 할당)
  • header_y_n은 머리글 삭제 유무
    • True의 경우 머리글 삭제 X
    • False의 경우 머리글 삭제 O
  • only_data는 수식, 값 선택 유무
  • change는 행,렬값 변형 선택
    • True값이면 행과 열 값이 거꾸로 나옴

2-2. 복사

df = read_range(file_name1, sheet_name1, r_range, header_y_n, only_data)

read_range 함수를 이용하여 원하는 범위(or 시트)값을 읽어 데이터 프레임 형식 df를 가져온다.(read_range 함수란?)
only_data의 값에 따라 수식을 가져 올 것인지 값만 가져올 것인지 선택 할 수 있다.

2-3. 붙여넣기

write_range(file_name2, df, sheet_name2, w_range, header_y_n)

2-2에서 복사한 데이터프레임, df를 write_range 함수를 이용하여 원하는 범위에 붙여넣기한다.(write_range 함수란?)

여담

uipath의 경우 바꾸기 기능을 지원하였다. 따라서 해당 기능도 똑같이 지원한기 위해 change라는 값을 넣게 되었다.
해당 값이 True이면 바꾸기 기능을 지원한다.

if change:
    df = read_range(file_name1, sheet_name1, r_range, False, only_data)
    df = df.transpose()
    write_range(file_name2, df, sheet_name2, w_range, False)
profile
기타치는 개발자

0개의 댓글