1. 데이터 테이블 (이하 DT)
https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-5.0
- 윈도우의 DataTable 클래스와 동일 (C#, .Net VBA)
- C# 형태의 DataTable 사용법은 위 링크의 MS 공식문서 참조
2. UiPath 기본 지원 엑티비티 (Studio 설치 시 바로 사용가능)
- 이미지의 기능을 다 사용하지는 않지만 다른 엑티비티와 조합해서 사용하면 빠르고 간편함.
3. 사용 예제
Q1) Table 1을 Table 2로 만들기
- Table 1
Column1 | Column2 | Column3 |
a | b | c |
1 | 2 | 3 |
- Table 2
Column1 | Check | Column2 | Column3 | Sum |
a | Y | b | c | abc |
1 | N | 2 | 3 | 123 |
A1)
Q2) 엑셀에서 데이터테이블 받아오기
A2) 생략
Q3) Filter Data Table, Clear DataTable, Merge DataTable, Join Data Table
A3) 생략
4. 실전 예제
Q1) Row 수가 10만건(임의의 충분히 많은 수) 정도인 DT 중 특정 데이터를 필터링하여 가져오기
이름 | 나이 | 신장 | 몸무게 | 연락처 | 차량 소유 여부 | 취미 |
A | 10 | 150 | 50 | 010-0000-0000 | False | 게임, 영화 |
... | ||||||
Z | 100 | 160 | 60 | 011-9999-9999 | True | 음악, 영화 |
- 위 DT에 데이터가 랜덤하게 8만건이 엑셀 파일로 있다고 가정했을 때,
- 나이가 30세에서 70세 사이의 키 150이상인 자차를 소유한 사람들만 가져오기
- 취미가 영화이고 나이가 50세 미만인 사람들의 이름과 연락처만 가져오기
- 연락처가 010 으로 시작하지 않는 사람들만 가져오기
A1) Linq, filter 등 사용
Q2) 데이터 컬럼수가 100개 이상인 DT를 가져와 수정하기
1 | ... | 124 |
a1 | ... | a124 |
b1 | ... | b124 |
- 위 DT의 값 중 컬럼명이 소수인 데이터만 가져오기
- 컬럼 명이 짝수인 값을 가져와서 중간에 Flag(값은 상관없음) 넣기
A2) Linq, filter 등 사용
Q3) Row 수가 변할 수 있는 DT 가져오기
- 1회차 실행 : Row Count = 102
- 2회차 실행 : Row Count = 95
- 3회차 실행 : Row Count = 135
- ...
- n회차 실행 : Row Count = 73
A3)
Q4) 입력 받은 DT의 컬럼 순서 바꾸기
- input
1 | 2 | 3 | 4 |
a | b | c | d |
-output
1 | 3 | 4 | 2 |
a | c | d | b |
A4) VBA, filter 활용
5. 응용
Q1) 원하는 컬럼 개수를 가진 임시 헤더용 DT 생성
A1)
// VBA 스크립트지만 하이라이팅이 없으므로 C# 주석 사용
// input : in_int_헤더개수 (input, Integer)
// output : out_dt_임시DT (output, DataTable)
Dim dt_tmp As New DataTable()
For int_i as Integer To in_int_헤더개수
dt_tmp.Columns.Add("Columns " + int_i.ToString(), typeof(Object));
Next int_i
// Return
out_dt_임시DT = dt_tmp
Q2) 데이터가 있는 데이터 테이블의 헤더만 추출하기
A2)
// 아래 내용은 VBA 코드임
'Computer Science > RPA & Automation' 카테고리의 다른 글
[UiPath] Invoke Code (C#) (0) | 2021.07.04 |
---|---|
[UiPath] StandAlone 라이선스 관리하기 (0) | 2021.07.04 |
[UiPath] Custom Activity (2) | 2021.06.06 |
[UiPath] 윈도우 스케줄러 사용 및 로컬에서 배포/ 삭제 하기 (0) | 2021.02.07 |
[UiPath] Invoke Code (.Net VBA) (0) | 2020.11.16 |
[UiPath] 네이버 오늘의 회화, 카카오톡으로 매일 보내주기 (0) | 2020.07.15 |
댓글