[RPA] DataTable, WorkBook과 Excel
System.Data.DataTable
데이터 테이블은 행과 열이 있는 간단한 스프레드시트로 데이터를 저장할 수 있는 변수 형식입니다.
데이터테이블
데이터 테이블은 행과 열의 컬렉션이 있는 단일 데이터베이스 테이블의 메모리 내 표현입니다.

워크시트
Excel 워크시트는 다양한 시각화 옵션과 광범위한 그래픽 사용자 인터페이스 사용으로 데이터를 시각적으로 표현한 것입니다.
데이터테이블 생성
- Build Data Table 액티비티
열 수와 각 열의 데이터 형식을 선택합니다. 각종 속성을 선택한 후 datatable을 생성합니다
- Read Range 액티비티
워크시트의 콘텐츠(또는 해당 워크시트의 선택 항목)를 가져와서 데이터 테이블 변수에 저장합니다.
- Read CSV 액티비티
CSV 파일의 콘텐츠를 캡처하여 데이터 테이블 변수에 저장합니다.
- 데이터 스크래핑 액션
브라우저, 애플리케이션 또는 문서에서 구조화된 데이터를 데이터 테이블로 추출할 수 있습니다.
- 텍스트 액티비티의 Generate Data Table
사용자가 행 및 열 구분자를 표시하도록 하여 구조화된 텍스트에서 데이터 테이블을 만드는 역할을 할 수 있습니다.
데이터테이블 엑티브티
- Add Data Column
기존 데이터 테이블 변수에 열을 추가합니다.
데이터 형식을 지정하고 옵션(null 값 허용, 고유 값 요청, 자동 증가, 기본값 및 최대 길이)을 구성하여 빈 열을 추가
- Add Data Row
기존 데이터 테이블 변수에 새 행을 추가합니다. 각 개체를 각 열의 데이터 형식과 일치시켜 배열 행으로 입력할 수 있습니다.
- Build Data Table
전용 창을 사용하여 데이터 테이블을 만드는 데 사용됩니다.
- Clear Data Table
기존 데이터 테이블 변수의 모든 데이터를 지웁니다.
- Filter Data Table
다양한 조건을 사용하여 필터 마법사를 통해 데이터 테이블을 필터링할 수 있습니다.(가끔 필터가 적용이 안될 때가 있는데 더 공부가 필요함)
안되었던 두가지 이유
- Read Range 동작을 통해 읽은 모든 숫자 데이터는 Double로 인식되므로 필터를 사용할때 .00을 사용해줘야한다. 그렇지 않으면 필터링에 실패한다.
- 기존 컬럼을 필터링 하는것이 아닌 새로 만든 컬럼을 기준으로 필터링을 해주면 필터가 된다.
- For Each Row in Data Table
데이터 테이블의 각 행에 특정 액티비티를 수행하는 데 사용됩니다(For Each 루프와 유사).
- Generate Data Table From Text
사용자가 행 및 열 구분자를 표시하도록 하여 구조화된 텍스트에서 데이터 테이블을 만드는 데 사용할 수 있습니다.
- Join Data Tables
조인 마법사를 사용하여 서로 공통된 값으로 두 테이블의 행을 결합합니다. 두 개 이상의 데이터테이블을 사용하는것이 일반적으로 사용하는 방식입니다.
[Users라는 데이터테이블]

[OverDueBooks라는 데이터 테이블]

Inner : 결과 데이터테이블에 조인규칙에 따라 추출된 행이 포함되는 내용만 저장(충족되지않으면 제거되어 결과DT에 저장됨)
Left : 데이터 테이블 1의 모든 행과 조인 규칙을 충족하는 데이터 테이블 2의 값만 유지합니다.
Full : 조인 조건이 충족되는지 여부에 관계없이 데이터 테이블 1 및 데이터 테이블 2의 모든 행을 유지합니다.

Users와 OverDueBooks의 ID 컬럼이 같은 것으로 두 데이터의 행을 결합니다.

- Lookup Data Table
Excel의 vLookup과 유사합니다. 지정된 데이터 테이블에서 제공된 값을 검색, 지정된 좌표(RowIndex 및 Target Column)를 사용하여 셀에서 값을 반환하도록 구성할 수 있습니다.
(사용할 때마다 방식이 헷갈려서 반복적인 사용경험이 필요함)
- Merge Data Table
지정된 데이터 테이블을 현재 데이터 테이블에 추가하는 데 사용됩니다.
- Output Data Table
CSV 형식을 사용하여 문자열에 데이터 테이블을 씁니다.
- Remove Data Column
지정된 데이터 테이블에서 특정 열을 제거합니다.
- Remove Data Row
지정된 데이터 테이블에서 행을 제거합니다.
- Remove Duplicate Rows
지정된 데이터 테이블 변수에서 중복 행을 제거하고 첫 번째 발생만 유지합니다.
- Sort Data Table
특정 열의 값을 기준으로 데이터 테이블을 오름차순 또는 내림차순으로 정렬할 수 있습니다.
- Get Row Item
지정된 열에 따라 데이터 테이블의 행에서 값을 검색합니다.
- Update Row Item
지정된 값을 표시된 데이터 테이블 행의 열에 할당합니다.
WorkBook과 Excel
통합 문서 - File Access Level
모든 통합 문서 액티비티는 백그라운드에서 실행됩니다
런타임 때 Excel 애플리케이션에서 파일을 열지 않아야 합니다

Excel - Excel 앱 통합
UiPath는 마치 사람처럼 Excel을 엽니다.
백그라운드에서 실행되게 설정할 수 있습니다. 런타임에 Excel에서 파일을 열 수 있습니다.

Append Range
데이터 테이블의 정보를 지정된 Excel 스프레드시트의 끝에 추가합니다. 시트가 없으면 새로 만듭니다.
Get Table Range
테이블 이름을 입력으로 사용하여 지정된 스프레드시트에서 Excel 테이블의 범위를 찾아 추출합니다.
Read Cell
지정된 셀의 콘텐츠를 읽고 String으로 저장합니다.
Read Cell Formula
지정된 셀에서 수식을 읽고 String으로 저장합니다.
Read Column
사용자가 입력한 셀로 시작하는 열을 읽고 IEnumerable 변수로 저장합니다.
Read Range
지정된 범위를 읽고 데이터 테이블에 저장합니다.
'Excel Application Scope'의 Read Range 액티비티에서 '필터 사용'을 선택한 경우 필터링된 데이터만 읽습니다.
이 옵션은 'Workbook'의 Read Range 액티비티에 대해 존재하지 않습
Read Row
사용자의 셀 입력으로 시작하는 행을 읽고 IEnumerable 변수로 저장합니다.
Write Cell
지정된 셀에 값을 씁니다. 셀에 데이터가 포함된 경우 액티비티가 데이터를 덮어씁니다. 지정된 시트가 없으면 생성됩니다.
Write Range
StartingCell 필드에 표시된 셀로 시작하는 스프레드시트의 데이터 테이블 변수에서 데이터를 씁니다.
Excel Application Scope
Excel과의 통합은 Excel Application Scope 액티비티를 사용하여 활성화됩니다.
이는 컨테이너이며 지정된 Excel 파일로 작업하는 데 사용되는 다른 모든 Excel 액티비티는 컨테이너 내부에 배치되어야 합니다.

Excel 앱 통합 관련 액티비티
CSV 액티비티
이러한 액티비티는 데이터 테이블 변수를 사용하여 CSV 파일에서 읽고 쓸 수 있습니다.
- Append CSV: 데이터 테이블의 정보를 CSV 파일에 추가하고 파일이 없는 경우에는 만듭니다. 기존 데이터를 덮어 쓰지 않습니다
- Read CSV: CSV 모든 항목을 읽고 이를 데이터 테이블에 저장합니다.
- Write CSV: CSV를 데이터 테이블의 정보로 덮어씁니다.
Range 액티비티
이러한 액티비티는 데이터를 읽고, 행과 열을 삽입 및 삭제하고, 전체 범위를 복사/붙여넣기할 수도 있습니다.
- Delete Column: 이름을 기준으로 Excel 파일에서 열을 제거합니다.
- Insert Column: Excel 파일의 특정 위치에 빈 열을 삽입합니다.
- Insert/Delete Columns: 지정된 변경 형식에 따라 빈 열을 추가하거나 기존 열을 제거합니다.
- Read Column: StartingCell 속성 필드에 지정된 셀로 시작하는 열에서 값을 읽고 IEnumerable 변수에 저장합니다.
- Insert/Delete Rows: 지정된 변경 형식에 따라 빈 행을 추가하거나 기존 행을 제거합니다.
- Select Range: Excel 파일에서 특정 범위를 선택합니다. 일반적으로 선택한 데이터에 대해 특정 조작을 수행하는 다른 액티비티와 쌍을 이룹니다.
- Get Selected Range : 지정된 범위를 String으로 출력합니다.
- Delete Range: Excel 파일에서 지정된 범위를 제거합니다.
- Auto Fill Range: Excel 파일의 지정된 범위에 지정된 수식을 적용합니다.
- Copy Paste Range: 소스 시트에서 대상 시트로 전체 범위(값, 수식, 서식)를 복사하여 붙여 넣습니다.
- Lookup Range: 지정된 범위의 모든 셀에서 값을 검색합니다.
- Remove Duplicate Range: 지정된 범위에서 모든 중복 행을 삭제합니다.
- Read Range: Excel 범위의 값을 읽고 데이터 테이블 변수에 저장합니다. 범위를 지정하지 않으면 전체 스프레드시트를 읽습니다. 범위가 셀로 지정된 경우 해당 셀부터 전체 스프레드시트를 읽습니다.
- Append Range: 데이터 테이블 변수에 저장된 정보를 지정된 Excel 스프레드시트의 끝에 추가합니다. 시트가 없는 경우 SheetName 필드에 표시된 이름으로 새 시트가 생성됩니다.
- Write Range: StartingCell 필드에 표시된 셀로 시작하는 스프레드시트의 데이터 테이블 변수에서 데이터를 씁니다. 시작 셀을 지정하지 않으면 A1 셀부터 데이터가 기록됩니다. 시트가 없으면 SheetName 속성에 지정된 값으로 새 시트가 생성됩니다.
Table 액티비티
이러한 액티비티는 Excel 파일에서 직접 테이블을 생성, 필터링, 정렬합니다.
- Filter Table: Excel 파일 내부 테이블의 모든 값에 필터를 적용합니다. 파일이 저장되면 필터를 충족하는 행만 표시됩니다. 이 액티비티는 기준을 충족하지 않는 행을 제거하지 않고 숨깁니다. 이 메서드를 잘 사용하려면 '필터 사용' 체크 박스를 선택한 후 Read Range 액티비티를 사용하는 것이 좋습니다. 출력은 지정된 기준을 충족하는 항목만 포함하는 데이터 테이블입니다.
- Sort Table: 지정된 열의 값을 기준으로 Excel 파일의 테이블을 정렬합니다.
- Create Table: 속성 패널에 지정된 범위에 테이블(이름 포함)을 생성합니다.
File 액티비티
이러한 액티비티는 Excel 파일을 저장하거나 닫음으로써 Excel 파일을 직접 활용합니다.
- 통합 문서 닫기
- 통합 문서 저장
Cell Color 액티비티
이러한 액티비티는 Excel 파일에서 셀의 배경색을 캡처하고 수정할 수 있습니다.
- Get Cell Color: Excel 파일에서 배경색 또는 지정된 셀을 읽고 색 변수 출력으로 저장합니다.
- Set Range Color: 지정된 범위에서 모든 셀의 배경색을 변경합니다. 입력 값은 색 변수입니다.
Sheet 액티비티
이러한 액티비티는 Excel 파일의 시트에 대해 다양한 액션을 수행할 수 있습니다.
- Get WorkbookSheet: 인덱스별로 시트의 이름을 읽습니다.
- Get Workbook Sheets: 시트 이름을 추출하여 인덱스별로 정렬하여 저장합니다.
- Copy Sheet: Excel 파일의 시트를 복사하여 동일한 Excel 파일 또는 지정된 다른 파일에 붙여 넣습니다.
Pivot Table 액티비티
이러한 액티비티는 Excel 파일에서 피벗 테이블 작업을 용이하게 합니다.
- Refresh Pivot Table: Excel 파일의 피벗 테이블을 새로 고칩니다. 새로 고침이 자동이 아니므로 피벗 테이블 소스 데이터가 변경될 때 유용합니다.
- Create Pivot Table: 지정된 시트와 지정된 파라미터를 사용하여 피벗 테이블을 만듭니다.
Macro 액티비티
이러한 액티비티는 Excel 파일에 이미 정의된 매크로를 실행하거나 다른 파일에서 매크로를 호출할 수 있습니다. 이러한 액티비티는 .xslm 파일에서 작동합니다.
- Execute Macro
- Invoke VBA: 다른 파일의 매크로