본문 바로가기

IT/RPA

[RPA] #6-1 UiPath 엑셀(Excel) & 데이터테이블 추출, 필터링 및 가공하기

# 추출된 데이터로 엑셀파일 만들기

# 데이터 쓰기 조건 적용

# Filter Data Table

 

<목차>

** 데이터테이블 및 엑셀 데이터 다루기

 

 

** 데이터테이블 및 엑셀 데이터 다루기

 

 

 

앞선 과정으로

테이블 데이터를 추출하는 방법에 대해 다루었다.

 

 

그렇다면 이 추출한 테이블데이터는

어떻게 다룰 수 있을까?

 

 

 

-> 바로 엑셀과 관련한 액티비티를 이용해 저장 및 가공할 수 있다.

 

 

 

 

 

1. UiPath 에서의 엑셀

 

* 일반적으로 엑셀은 최소단위인 셀(Cell)과 행(Row), 열(Column), 그리고 필드(칼럼명, Field)로 이루어져 있다. 

 

 

* UiPath에서는

1) 크게 HeaderRange 영역으로 나뉘고

2) 행 데이터(Row)와 열 데이터(Item)로 구성되며, 엑셀과는 약간의 차이가 있다.

 

 

 

UiPath 에서 Excel의 구조

 

 

 

DataTable에서

*컬럼명Header라고 부르며,

 

*Header를 제외한 전체 데이터 영역Range라고 부른다.

 

 

 

 

UiPath에서의 엑셀

 

 

데이터, 즉 Range 영역RowItem으로 이루어진다.

* 또한 각 행과 열에 대한 Index는 0부터 시작한다.

 

 

 

 

 

 

2. UiPath에서 엑셀 다루기

1) 전제조건

* UiPath에서 Excel과 관련된 모든 작업은 Excel Application Scope 액티비티 내에서 수행한다.

* 또한, 파일 실행 시 Excel Application Scope와 연결된 엑셀 파일은 닫고 실행해주어야 한다.

 

 

Excel Application Scope

 

 

 

 

 

 

2) 엑셀 읽기

 

   (1) 엑셀 읽기에 사용하는 액티비티 Read Range이다. 

 

 

Read Range

 

 

 

 

-> 읽어올 데이터 시트의 이름(Sheet1)을 입력하고, 읽기 시작 지점 넣어준다. 빈값("")으로 둘 경우 Default는 "A1"이다.

 

 -> 기본적으로 엑셀과 관련된 액티비티로 읽어온 데이터는 object 타입이다.

    ? object 데이터 타입은 여러 타입의 데이터를 담을 수 있음 -> 다양한 데이터 형식에 대응할 수 있기 때문임.

 

 

 

 

 

  (2) Read Range 수행으로 반환되는 DateTable 데이터에 대해 변수(DT_Read)로 받아주어야 한다.

 

Read Range 의 속성

 

 

 

Read Range의 속성 패널에서 변수 선언 시,

 

자동적으로

 

Type을 DataTable로 인식해 변환해 준다.

 

 

 

 

 

 

 

3) 엑셀 쓰기

* 위의 과정으로 Read Range로 읽어온 엑셀의 데이터테이블은 DT_Read이라는 변수에 담기게 된다.

-> 읽어온 데이터를 엑셀 파일 내에 붙여 넣기(즉, 쓰기)를 하고 싶다면?

-> Write Range 액티비티를 사용한다.

 

Write Range

 

 

-> 위를 실행하면 '엑셀쓰기.xlsx' 파일의 Sheet1 구역의 A1부터 DT_Read 데이터를 입력하겠다는 뜻이다.

 

-> 새로운 경로새로운 파일을 만들고 싶다면?

   : 엑셀의 경로를 "새로운 경로\새로운파일이름.xlsx" 로 지정한다

 

 

Write Range의 속성

 

 

단, Write Range의 속성 - 옵션의 머리글 추가에 대하여

 

* True로 설정할 시: DT_Read의 Header을 가져온다

* False로 설정할 시: DT_Read의 Header을 제외한 Range 부분의 데이터를, 데이터 쓰기 시작지점 (A1)부터 써내려 간다.

 

-> 대부분의 DT는 Header을 가지고 있으므로 True로 변경하는 것을 기본으로 한다.

 

 

 

 

 

3. 엑셀 데이터테이블 가공하기

1) 데이터테이블 생성하기

* 데이터테이블은 대부분 1)엑셀파일을 읽어온 것, 2)추출한 데이터, 기존의 3)데이터테이블을 가공한 것이다.

 

 

  (1) 엑셀 파일에 접근하는 경우

: 위에서 언급한 대로 Excel Application Scope 내에서 Read Range를 이용하여 DataTable 타입 변수에 담아준다.

 

 

 

 

 

  (2) 추출한 테이블데이터를 데이터테이블로 변환하는 경우

  => 데이터 스크래핑을 통한 테이블데이터 추출, 데이터테이블 변수에 받아주기

 

  =>  데이터 스크래핑 과정을 통해 데이터를 추출한 경우, Default로 'Extract데이터 테이블'이라는 값이 출력 자리에 입력되는데, 변수명에 공백이 포함 시 오류가 발생하므로, 적절히 변경해 준다.

 

 

 

데이터 스크래핑을 통해 데이터 추출

 

 

! 이때 데이터 스크래핑을 통한 반환값을 받은

 

'Extract데이터 테이블'이 담고 있는 데이터는,

 

Read Range 액티비티를 통해 받아들인 데이터

그 형태와 성질이 동일하다!!!

 

 

 

 

 

 

  (3) Build Data Table를 이용해 새로운 데이터 테이블 만들기

  => Build Data Table 액티비티를 이용하여 원하는 칼럼명과 데이터 형식을 지정하고

 

  •  데이터테이블 변수에 대해 For Each Row Data를 이용, Add Data Row를 통해 DT_New에 데이터 쌓기

 

  • 데이터테이블 변수에  For Each Row Data를 이용, Get Row Item을 통해 각 칼럼별로 데이터를 추출 후 Add Data Row의 배열행에서 추출한 값들을 조합. 단, 칼럼의 개수만큼 Get Row Item으로 셀값을 전달해 주어야 한다.

 

 

 

 

Build Data Table

 

Build Data Table 시각화

 

 

 

Build Data Table

 

 

 

 

이때, If를 이용하여

원하는 조건에 해당하는 데이터만 쌓을 수 있는데,

 

 

Get Row Item으로 가져오는 행의 셀의 값에 대해

 

지정한 조건의 충족 여부를 판단하여 Filtering 할 수 있다.

이것이 테이블 가공 과정이다.

 

 

 

 

 

2) 테이블 가공하기

 

For Each Row Data in DataTable 의 작동 과정

 

* For Each Row Data == For Each Row Data in DataTable

 

 

 

 

 

* Add Data Row 액티비티에서 배열행을 지정해주어야 하는데, 

중괄호로 묶어주고, 칼럼별 구분은 콤마(,)로 해준다. 데이터타입은 String으로 이루어져야 하므로 주로 .ToString을 사용, 강제 형변환을 시켜준다.

 

 

Add Data Row

 

 

 

 

! If로 조건은 지정하여 Add Data Row를 시행하는 것 말고도 다른 방법이 있다.

 

* 바로  Filter Data Table 액티비티를 이용하는 방법이 있다. 이때는 Build Data Table을 이용하지 않고, Filter Data Table의 반환값을 받는 변수만 정의해 주면 된다.

 

 

Filter Data Table

 

 

 

* 필더링에 대한 조건, 출력 열에 대한 정의를 비워두면, 즉 Default 값으로 두면 모든 행을, 모든 열을 출력하게 된다.

 

 

 

 

4. 사용한 Activity 정리

 --- 엑셀 관련

1) Excel Application Scope

: 모든 엑셀과 관련된 액티비티들은 이 안에서 실행한다.

  • 2) Read Range : 엑셀 데이터를 읽어온다. 출력값을 받아줄 변수가 필요하다.
  • 3) Write Range : 엑셀에 데이터를 입력한다. 머리글 추가 여부를 선택해야 한다.

 

 

4) Build Data Table 

: 원하는 칼럼만으로 구성된 Header 또는 Default 데이터가 담긴 데이터테이블을 생성한다.

: 칼럼별 데이터 타입 지정 가능.

 


5) For Each Row in Data Table

: 데이터테이블 데이터의 한 행씩 위에서부터 차례대로 불러와 변수에행을 할당해 작업을 수행할 수 있다.

: For Each 액티비티와 동일한 원리이다. 단지 변수에 전체 열에 대한 행 데이터 한 줄이 할당될 뿐이다.

 


6) Add Row Data

: 원하는 배열행을 입력하여 값을 가공하여 입력할 수 있게 된다.

: For Each Row Data in DataTable 안에서 주로 실행되며, 매회 반복에 할당되는 row 데이터에 대하여 값을 가공한다.

 


7) Get Row Item: 역시 For Each Row Data in DataTable 안에서 종종 사용되며, 할당된 currentrow에 대해 가공할 수 있다.

 


8) Filter Data Table :

: Build Data Table을 이용하여 데이터테이블을 만들어주지 않아도 자동적으로 Filtering이 수행된 DataTable 형식의 결과물을 반환한다.

: Filtering의 조건과 출력열에 대해 지정해 줄 수 있다.

 


9) If

: 조건을 지정하고, 조건을 충족할 시 True를, 아니면 False를 반환한다.

: 후에 나오겠지만 Element Exists 액티비티와 잘 쓰인다.