# 추출된 데이터로 엑셀파일 만들기
# 데이터 쓰기 조건 적용
# Filter Data Table
<목차>** 데이터테이블 및 엑셀 데이터 다루기 |
** 데이터테이블 및 엑셀 데이터 다루기
앞선 과정으로
테이블 데이터를 추출하는 방법에 대해 다루었다.
그렇다면 이 추출한 테이블데이터는
어떻게 다룰 수 있을까?
-> 바로 엑셀과 관련한 액티비티를 이용해 저장 및 가공할 수 있다.
1. UiPath 에서의 엑셀
* 일반적으로 엑셀은 최소단위인 셀(Cell)과 행(Row), 열(Column), 그리고 필드(칼럼명, Field)로 이루어져 있다.
* UiPath에서는
1) 크게 Header와 Range 영역으로 나뉘고
2) 행 데이터(Row)와 열 데이터(Item)로 구성되며, 엑셀과는 약간의 차이가 있다.
DataTable에서
*컬럼명은 Header라고 부르며,
*Header를 제외한 전체 데이터 영역을 Range라고 부른다.
데이터, 즉 Range 영역은 Row와 Item으로 이루어진다.
* 또한 각 행과 열에 대한 Index는 0부터 시작한다.
2. UiPath에서 엑셀 다루기
1) 전제조건
* UiPath에서 Excel과 관련된 모든 작업은 Excel Application Scope 액티비티 내에서 수행한다.
* 또한, 파일 실행 시 Excel Application Scope와 연결된 엑셀 파일은 닫고 실행해주어야 한다.
2) 엑셀 읽기
(1) 엑셀 읽기에 사용하는 액티비티는 Read Range이다.
-> 읽어올 데이터 시트의 이름(Sheet1)을 입력하고, 읽기 시작 지점을 넣어준다. 빈값("")으로 둘 경우 Default는 "A1"이다.
-> 기본적으로 엑셀과 관련된 액티비티로 읽어온 데이터는 object 타입이다.
? object 데이터 타입은 여러 타입의 데이터를 담을 수 있음 -> 다양한 데이터 형식에 대응할 수 있기 때문임.
(2) Read Range 수행으로 반환되는 DateTable 데이터에 대해 변수(DT_Read)로 받아주어야 한다.
Read Range의 속성 패널에서 변수 선언 시,
자동적으로
Type을 DataTable로 인식해 변환해 준다.
3) 엑셀 쓰기
* 위의 과정으로 Read Range로 읽어온 엑셀의 데이터테이블은 DT_Read이라는 변수에 담기게 된다.
-> 읽어온 데이터를 엑셀 파일 내에 붙여 넣기(즉, 쓰기)를 하고 싶다면?
-> Write Range 액티비티를 사용한다.
-> 위를 실행하면 '엑셀쓰기.xlsx' 파일의 Sheet1 구역의 A1부터 DT_Read 데이터를 입력하겠다는 뜻이다.
-> 새로운 경로의 새로운 파일을 만들고 싶다면?
: 엑셀의 경로를 "새로운 경로\새로운파일이름.xlsx" 로 지정한다
단, 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으로 셀값을 전달해 주어야 한다.
이때, If를 이용하여
원하는 조건에 해당하는 데이터만 쌓을 수 있는데,
Get Row Item으로 가져오는 행의 셀의 값에 대해
지정한 조건의 충족 여부를 판단하여 Filtering 할 수 있다.
이것이 테이블 가공 과정이다.
2) 테이블 가공하기
* For Each Row Data == For Each Row Data in DataTable
* Add Data Row 액티비티에서 배열행을 지정해주어야 하는데,
중괄호로 묶어주고, 칼럼별 구분은 콤마(,)로 해준다. 데이터타입은 String으로 이루어져야 하므로 주로 .ToString을 사용, 강제 형변환을 시켜준다.
! If로 조건은 지정하여 Add Data Row를 시행하는 것 말고도 다른 방법이 있다.
* 바로 Filter Data Table 액티비티를 이용하는 방법이 있다. 이때는 Build 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 액티비티와 잘 쓰인다.
'IT > RPA' 카테고리의 다른 글
[RPA] #6-2 UiPath 엑셀(Excel) & 데이터테이블 Lookup Data Table (1) | 2024.01.23 |
---|---|
[RPA] #7 UiPath 디버깅(Debugging) 하는 법 (0) | 2024.01.22 |
[RPA] #5 String 데이터 가공하기 - Array 데이터, For Each, String 데이터 가공하는 7가지 필수 함수, DateTime 변수 (0) | 2024.01.16 |
[RPA] #4 UI 수정하기 - Selector 편집, UIExplorer, 와일드카드(WildCard), 정보용 스크린샷 변경 (0) | 2024.01.16 |
[RPA] #3-2 UI 데이터 추출하기 - 조건문(If, Flow Decision), 반복문, 논리연산자 (0) | 2024.01.16 |