본문 바로가기
RPA/UiPath 강좌

[UiPath-015] 엑셀(Excel) 다루기

by 천왕지짐 2023. 5. 21.
UiPath에서 엑셀을 연동하여 사용하는 경우는 매우 많다. 크롤링한 결과를 엑셀로 저장하거나 엑셀에서 데이터를 하나씩 읽어 검색에 활용할 수도 있다. 또한 엑셀 그 자체를 계산하거나 셀 색을 변경할 수도 있다. 활용도가 매우 높으니 잘 배워두자.

 

UiPath에서 엑셀을 다루는 방법은 엑셀 프로그램이 설치되지 않았더라도 사용이 가능한 File Access Level과 백그라운 실행이 가능한 Excel Application Scope가 있다. 첫번째 방법은 엑셀이 설치되어 있지 않아도 동작이 가능하지만 .xlsx 확장자 파일만 적용 가능하며 Workbook 하위에 액티비티가 있고, 두번째 방법은 파일이 열려있지 않더라도 사람처럼 파일을 열고 작업을 수행하며 Excel 하위에 액티비티가 있다.

열고 작업하는 경우 파일의 서식, 스타일 및 다른 엑셀 기능을 활용할 수 있으나 열지 않고 작업하는 경우 작업 속도가 빠른 반면 서식, 스타일 및 다른 엑셀 기능을 활용할 수 없고 단지 데이터를 처리하고 저장할 수만 있다. 

 

일단 Excel 관련 몇몇 액티비티들을 살펴보자.

- Excel Application scope - 엑셀 관련 액티비티를 사용하기 위한 틀
- Read Range - 엑셀 데이터 읽기

- Write Range - 엑셀에 데이터 쓰기

- Append Range - 엑셀에 데이터 추가하기, 해당시트 마지막 행 뒤에 이어서 입력됨

- Read cell - 셀을 텍스트로 읽기, 시트명과 고정된 셀의 위치 값이 필요

- Write cell - 텍스트를 셀에 입력하기, Read cell과 반대 개념으로 시트명과 고정된 셀의 위치 값이 필요

- Create pivot table - 선택영역을 피벗테이블로 만들기

 

시작하기 전에 엑셀 파일이 열려있으면 파일을 읽지 못해서 에러가 발생되므로 엑셀이 열려 있는지 닫혀있는지 확인하자.

 

엑셀 값 읽어오기

 

엑셀에서 값을 읽어올 때는 앞에서도 언급했지만 Excel을 직접 열어 작업하거나 혹은 열지 않은 상태에서도 작업할 수 있다. 

SampleData.xlsx
0.01MB

엑셀 작업을 위해 사용할 첨부파일로 내용은 다음과 같다.

파일 경로에 대해 머리쓰기 싫다면 다운로드 받은 저 SampleData.xlsx를 Uipath 프로젝트 폴더안에 위치시키면 된다.

 

Excel을 직접 열어서 데이터를 읽는 방법


1) Excel Application Scope Activity를 가져다 놓은 후 "Workbook 경로입니다. 텍스트를 따옴표로 묶어야 합니다." 부분에 엑셀 파일의 경로와 이름을 입력해 준다. 프로젝트 폴더안에 있는 경우 큰 따옴표와 함께 이름만 적어주면 된다.(폴더에서 파일을 찾아 더블클릭해도 된다.)

2) 앱통합->Excel에 있는 Read Range Activity를 실행 시퀀스안에 가져다 놓는다.(엑셀에서 시트이름을 바꿨다면 그 이름을 바꾸지 않았다면 'Sheet1'일 것이다.) 특별히 건들 필요는 없다. 

3) 속성 출력의 데이터 테이블에 변수를 설정하는 Ctrl + K를 누른 후 변수명을 'ReadDT'라고 입력한다. 이 변수에 엑셀에서 읽어온 데이터(정확하게는 데이터 테이블)가 저장된다.

참고로, 속성의 Range부분에 범위를 입력하면 입력된 범위만큼만 값을 읽어오고 원래 있는대로 그대로 두면 모든 값을 다 읽어온다. 


Excel을 열지 않고 데이터를 읽는 방법

1) 시스템->파일->통합 문서에 있는 Read Range Activity를 가져다 놓은 후 "Workbook 경로입니다. 텍스트를 따옴표로 묶어야 합니다." 부분에 엑셀 파일의 경로와 이름을 입력해 준다. 프로젝트 폴더안에 있는 경우 큰 따옴표와 함께 이름만 적어주면 된다.(폴더에서 파일을 찾아 더블클릭해도 된다.)

2) 속성의 Range와 SheetName을 확인한다. 위 엑셀 데이터를 기준으로 하면 범위는 A1:E5이다. 

3) 속성 출력의 데이터 테이블에 변수를 설정하는 Ctrl + K를 누른 후 변수명을 'ReadDT'라고 입력한다.(이미 위에서 변수를 생성해줬다면 다시 생성할 필요는 없다.)
  

 

읽어온 엑셀 데이터 프레임 출력하기

 

데이터 테이블과 같은 형식의 변수를 출력하는 것은 쉽지 않고 아래처럼 조금 복잡하다. 하지만 Output Data table Activity를 사용하면 Message box로도 확인이 가능하다. 스스로 실습해 보자.

 

1) for Each Row in Data Table Activity를 이용해 추출한 ReadDT를 입력하고 CurrentRow에 하나씩 데이터를 가져와 처리한다. in안의 'VB 식 입력'에 변수명 ReadDT을 입력한다.(속성의 입력-데이터 테이블에 입력해도 된다.)


2) Write Line Activity나 Message Box Activity를 이용해 내용을 출력해 볼 수 있다. 

"학번 : " + CurrentRow("학번").ToString + "성명 : " + CurrentRow("성명").ToString + "국어 : " + CurrentRow("국어").ToString + "영어 : " + CurrentRow("영어").ToString + "수학 : " + CurrentRow("수학").ToString  

또는

"학번 : " + CurrentRow.Item(0).ToString + "성명 : " + CurrentRow.Item(1).ToString + "국어 : " + CurrentRow.Item(2).ToString + "영어 : " + CurrentRow.Item(3).ToString + "수학 : " + CurrentRow.Item(4).ToString

참고로 데이터 테이블에서 제목줄을 가져오고 싶다면 ReadDT.Columns(1).ColumnName 처럼 사용하면 되고 제목 이외의 첫번째 줄에서 첫번째 칸에 있는 내용을 가져오고 싶다면 ReadDT.Rows(0).ItemArray(0).ToString 처럼 사용하면 된다.

 

 

엑셀에 데이터 프레임 입력하기

 

1) Write Range를 사용해 엑셀파일에 데이터를 저장해 보자. 아래 프로젝트는 읽은 엑셀 데이터를 Sheet2에 다시 입력하는 것인데 스스로 유추해서 만들어 보자. Write Range의 속성중 옵션-AddHeaders를 선택하지 않으면 제목줄은 추가되지 않는다.

 

엑셀에 피봇 테이블 만들기

 

1) Create Pivot Table Activity를 추가하고 시트이름을 위와 다른 이름으로 지정하고 큰 따옴표와 함께 SourceTableName을 입력해 준다. 이  SourceTableName 이름은 엑셀에서 해당 표의 이름인데 지정이 안되어 있다면 표 전체를 블록설정한 후에 Ctrl +T를 눌러서 표로 만들고 표이름을 지정해 주면 된다.

속성의 대상-Range는 피벗 테이블이 만들어 지는 위치를 예를들어 "A1", 대상-TableName은 새 테이블이므로 아무 이름이나 주면 된다. 예를들어 "New_table"처럼

피벗 테이블 만들 때 행 필드, 열 필드, 데이터 필드를 직접 지정해야 하는데 알아서 만들어 준다. 알아서 만들어 주면 수정해서 써야겠다. StudioX에는 방법이 있던데...

 

 

엑셀 셀에 값 입력하기

 

Excel Application Scope Activity안에 Write Cell Activity 가져다 놓은 후 셀 위치와 값을 입력하면 끝이다.엑셀을 열지 않고 입력하는 방법도 확인해 보자.

 

엑셀과 관련된 다양한 액티비티들에 대해 알아보자.

 

Excel Application Scope: Excel 파일을 열고 닫을 범위를 지정하는 액티비티입니다.
Read Range: Excel 파일에서 데이터를 읽어 DataTable 변수에 저장하는 액티비티입니다.
Write Range: DataTable의 데이터를 Excel 파일에 쓰는 액티비티입니다.
Append Range: 기존 Excel 파일에 DataTable의 데이터를 추가하는 액티비티입니다.
Excel Read Cell: 특정 셀에서 데이터를 읽는 액티비티입니다.
Excel Write Cell: 특정 셀에 데이터를 쓰는 액티비티입니다.
Set Range Color: 특정 범위의 셀 배경색을 변경하는 액티비티입니다.
Set Range Font Color: 특정 범위의 글자 색상을 변경하는 액티비티입니다.
Set Range Font Size: 특정 범위의 글자 크기를 변경하는 액티비티입니다.
Set Range Font Name: 특정 범위의 글꼴 이름을 변경하는 액티비티입니다.
Set Range Font Bold: 특정 범위의 글자를 굵게 설정하는 액티비티입니다.
Set Range Font Italic: 특정 범위의 글자를 이탤릭체로 설정하는 액티비티입니다.
Set Range Number Format: 특정 범위의 숫자 서식을 변경하는 액티비티입니다.
Get Workbook Sheets: 엑셀 파일 내의 시트 목록을 가져오는 액티비티입니다.
Create Pivot Table: Pivot 테이블을 생성하는 액티비티입니다.
Filter Table: DataTable을 필터링하여 결과를 새로운 DataTable로 생성하는 액티비티입니다.
Sort Table: DataTable의 특정 열을 기준으로 정렬하는 액티비티입니다.
Get Cell Color: 특정 셀의 배경색을 가져오는 액티비티입니다.
Get Cell Formula: 특정 셀의 수식을 가져오는 액티비티입니다.
Set Cell Formula: 특정 셀에 수식을 설정하는 액티비티입니다.
Clear Range: 특정 범위의 데이터 및 서식을 지우는 액티비티입니다.
Delete Range: 특정 범위의 데이터 및 셀을 삭제하는 액티비티입니다.
Insert/Delete Rows/Columns: 행 또는 열을 삽입하거나 삭제하는 액티비티입니다.
Get Cell Value: 특정 셀의 값을 가져오는 액티비티입니다.
Get Row Item: 특정 행의 값을 가져오는 액티비티입니다.
Get Column Item: 특정 열의 값을 가져오는 액티비티입니다.
Save Workbook: 엑셀 파일을 저장하는 액티비티입니다.
Merge Cells: 셀을 병합하는 액티비티입니다.
Unmerge Cells: 병합된 셀을 해제하는 액티비티입니다.
Find Text: 특정 텍스트를 찾는 액티비티입니다.
Find Replace: 텍스트를 찾아 다른 값으로 대체하는 액티비티입니다.
Read Cell Formula: 특정 셀의 수식을 읽는 액티비티입니다.
Add Data Row: DataTable에 데이터 행을 추가하는 액티비티입니다.
Remove Data Row: DataTable에서 데이터 행을 제거하는 액티비티입니다.
Build Data Table: 새로운 DataTable을 생성하는 액티비티입니다.

Clear Cell: 특정 셀의 데이터와 서식을 지우는 액티비티입니다.
Insert/Delete Worksheet: 워크시트를 삽입하거나 삭제하는 액티비티입니다.
Protect/Unprotect Workbook: 워크북을 보호하거나 보호 해제하는 액티비티입니다.
Protect/Unprotect Sheet: 워크시트를 보호하거나 보호 해제하는 액티비티입니다.
Get Worksheet Names: 워크시트의 이름 목록을 가져오는 액티비티입니다.
Select Range: 특정 범위를 선택하는 액티비티입니다.
Activate Worksheet: 워크시트를 활성화하는 액티비티입니다.
Get Workbook Properties: 워크북의 속성(제목, 작성자 등)을 가져오는 액티비티입니다.
Set Workbook Properties: 워크북의 속성(제목, 작성자 등)을 설정하는 액티비티입니다.
Refresh Pivot Table: Pivot 테이블을 새로 고치는 액티비티입니다.
Export to Excel: DataTable 데이터를 Excel 파일로 내보내는 액티비티입니다.
Import Sheet: 다른 Excel 파일에서 워크시트를 가져오는 액티비티입니다.
Export Sheet: 워크시트를 다른 Excel 파일로 내보내는 액티비티입니다.
Get Last Row/Column: 마지막 행 또는 열의 인덱스를 가져오는 액티비티입니다.
Rename Sheet: 워크시트의 이름을 변경하는 액티비티입니다.

Get Cell FormulaR1C1: 특정 셀의 R1C1 형식의 수식을 가져오는 액티비티입니다.
Get Cell Address: 특정 셀의 주소를 가져오는 액티비티입니다.
Highlight Cell: 특정 셀을 강조 표시하는 액티비티입니다.
Remove Hyperlink: 특정 셀의 하이퍼링크를 제거하는 액티비티입니다.
Insert Hyperlink: 특정 셀에 하이퍼링크를 삽입하는 액티비티입니다.
Protect Workbook with Password: 워크북을 암호로 보호하는 액티비티입니다.
Protect Sheet with Password: 워크시트를 암호로 보호하는 액티비티입니다.
Sort Table Range: 특정 범위를 기준으로 테이블을 정렬하는 액티비티입니다.
Add Table Column: 테이블에 열을 추가하는 액티비티입니다.
Remove Table Column: 테이블에서 열을 제거하는 액티비티입니다.
Add Table Row: 테이블에 행을 추가하는 액티비티입니다.
Remove Table Row: 테이블에서 행을 제거하는 액티비티입니다.
Get Table Range: 테이블의 범위를 가져오는 액티비티입니다.
Set Table Range: 테이블의 범위를 설정하는 액티비티입니다.
Get Range Read Cell Formula: 특정 범위의 셀 수식을 읽는 액티비티입니다.
Set Range Write Cell Formula: 특정 범위의 셀에 수식을 설정하는 액티비티입니다.
Get Workbook Sheets Count: 워크북 내 시트의 개수를 가져오는 액티비티입니다.
Get Cell FormulaR1C1: 특정 셀의 R1C1 형식의 수식을 가져오는 액티비티입니다.
Remove Data Column: DataTable에서 열을 제거하는 액티비티입니다.
Get Cell Color RGB: 특정 셀의 배경색을 RGB 값으로 가져오는 액티비티입니다.
Get Sheet Index: 워크북 내 시트의 인덱스를 가져오는 액티비티입니다.
Sort Range: 특정 범위를 정렬하는 액티비티입니다.

Find First/Last Row/Column: 특정 값이나 조건을 충족하는 첫 번째 또는 마지막 행 또는 열을 찾는 액티비티입니다.
Insert Data Column: DataTable에 열을 삽입하는 액티비티입니다.
Set Range Border: 특정 범위의 셀에 테두리를 설정하는 액티비티입니다.
Get Named Range: 명명된 범위의 값을 가져오는 액티비티입니다.
Set Named Range: 명명된 범위를 설정하는 액티비티입니다.
Get Range Color: 특정 범위의 셀 배경색을 가져오는 액티비티입니다.
Sort DataTable: DataTable을 기준 열을 사용하여 정렬하는 액티비티입니다.
Excel Application Scope (Workbook): Excel 파일의 특정 워크북을 열고 닫을 범위를 지정하는 액티비티입니다.
Excel Read Cell Formula: 특정 셀의 수식을 읽는 액티비티입니다.
Excel Write Cell Formula: 특정 셀에 수식을 설정하는 액티비티입니다.
Excel Extract Graph: Excel 파일에서 그래프를 추출하는 액티비티입니다.
Excel Convert Range: Excel 파일의 특정 범위를 다른 데이터 형식으로 변환하는 액티비티입니다.
Excel Scope: Excel 파일을 열고 닫을 범위를 지정하는 액티비티입니다.
Excel Delete Column: Excel 파일에서 열을 삭제하는 액티비티입니다.
Excel Insert Column: Excel 파일에 열을 삽입하는 액티비티입니다.
Excel Delete Row: Excel 파일에서 행을 삭제하는 액티비티입니다.
Excel Insert Row: Excel 파일에 행을 삽입하는 액티비티입니다.
Excel Protect Sheet: Excel 파일의 특정 시트를 보호하는 액티비티입니다.
Excel Unprotect Sheet: Excel 파일의 특정 시트의 보호를 해제하는 액티비티입니다.
Excel Protect Workbook: Excel 파일을 보호하는 액티비티입니다.
Excel Unprotect Workbook: Excel 파일의 보호를 해제하는 액티비티입니다.
Excel Save Workbook: Excel 파일을 저장하는 액티비티입니다.
Excel Scope (Workbook): Excel 파일을 열고 닫을 범위를 지정하는 액티비티입니다.

 

이 외에도 더 많다.

댓글