UiPath/UiPath Practice
Excel and DataTables : Practice 2 - Calculating Loss Invoices
kimyosunnyc
2020. 10. 20. 14:30
출처 : UiPath Academy
Practice 2 - Calculating Loss Invoices (Check the invoices issued to bankruptcy clients)
엑셀 파일의 송장 중 파산한 고객에게 발행된 송장을 확인하고 손실로 기록할 송장의 합계를 계산한다.
[필요사항]
Input Files : Invoices.xlsx / Clients.csv
Clients.csv
0.00MB
Invoices.xlsx
0.01MB
Practice 2 Solution
엑셀 파일의 송장 중 파산한 고객에게 발행된 송장을 확인하고 손실로 기록할 송장의 합계를 계산한다.
📌 설정방법
- 'Read Range' activity를 사용하여 .xlsx 파일을 읽고 새로 만든 DataTable 변수("invoicesDT")에 저장한다.
- 'Read CSV' activity를 사용하여 .csv 파일을 읽고 새로 만든 DataTable변수("clientsDT")에 콘텐츠를 저장한다.
- 'Join Data Tables' activity를 사용하여 두 변수의 데이터를 새 변수("resultDT")에 통합한다.
Input Data Table1은 "clientsDT"이고, Input Data Table2는 "invoicesDT"여야한다.
두 DataTables의 "Client Name"을 column의 Join 기준 및 "Left" Join Type으로 사용한다.
(두번째 DataTable에서 Client에 대해 발행 된 송장만 유지하도록) - 'Filter Data Table' activity를 사용하여 "resultDT"에서 파산한 회사에 발행 된 송장을 확인한다.
이것을 위해 'Keep' radio button을 선택하고, 필터링 기준으로 'IsBankrupt'를 사용한다. (value "TRUE")
이 activity를 사용하여 필요하지 않은 일부 columns를 제거할 수 있다.
'Output Columns' tab으로 이동하여 'Remove' button을 선택하고 필요하지 않은 column의 이름("ClientName_1" and "ClientId")을 적어둔다.
Output DataTable : "filteredDT"라는 새로운 DataTable 변수에 저장한다. - 파산한 회사의 손실을 계산하려면 필터링 된 DataTable의 rows을 반복하고(For Each row in filteredDT) Integer로 변환 된 "InvoiceValue" column 내용의 합계를 저장할 변수에 추가한다. - "totalLoss" Integer Type.
다음의 Method를 사용하여 Body에 'For Each Row'와 'Assign' activity를 사용한다.
totalLoss = totalLoss + Cint(row("invoiceValue")); - 'Write Range' activity를 사용하여 필터링 된 데이터를 새 Excel 파일에 쓴다. 또한 'Write Cell' activity를 사용하여 기본 Table 외부에 있는 cell(ex. H4 cell)에 총 손실 정보를 추가할 수 있다.
1.1 Total Loss calculation sequence (Sequence)
Private = False
Variables
invoicesDT(DataTable)
clientsDT(DataTable)
resultDT(DataTable)
filteredDT(DataTable)
totalLoss(Int32)
Activities
1.46 Read Invoices File (ReadRange)
DataTable = invoicesDT
AddHeaders = True
PreserveFormat = False
WorkbookPath = Invoices.xlsx
SheetName = Sheet1
Private = False
1.42 Read Clients File (ReadCsvFile)
FilePath = Clients.csv
DataTable = clientsDT
Delimiter = Comma
IncludeColumnNames = True
Private = False
1.33 Join Client and Invoices Data Tables (JoinDataTables)
DataTable1 = clientsDT
DataTable2 = invoicesDT
JoinType = Left
DataTable = resultDT
Private = False
1.24 Filter Resulted Data Table (FilterDataTable)
DataTable = resultDT
SelectColumnsMode = Remove
FilterRowsMode = Keep
DataTable = filteredDT
Private = False
SelectColumns
value = "ClientName_1", Type = String, Direction = In
value = "ClientId", Type = String, Direction = In
1.14 For Each Row in the Data Table (ForEachRow)
DataTable = filteredDT
Private = False
Body
1.15 Body (Sequence)
Private = False
Activities
1.16 Calculate Total Loss (Assign)
To = totalLoss
Value = totalLoss+Cint(row("InvoiceValue"))
Private = False
1.8 Write Final File (WriteRange)
StartingCell = A1
DataTable = filteredDT
AddHeaders = True
SheetName = Sheet1
WorkbookPath = Results.xlsx
Private = False
1.2 Write Total to file (WriteCell)
Cell = H4
Text = "The total loss is: " + totalLoss.ToString
SheetName = Sheet1
WorkbookPath = results.xlsx
Private = False
✅ 참고사항
- 'Read Range' Activity : 이 Solution에서 옵션 PreserveFormat 체크 여부에 따른 결과물이다. (좌측이 체크 되어 있을 때 / 우측이 체크 해제 되어 있을 때)
- UiPath.Excel.Activities
- Option
- AddHeaders : 이 옵션을 선택하면 지정된 스프레드시트 범위의 열 머리글도 추출된다. 기본적으로 체크되어있다. (set to True)
- PreserveFormat(slower) : 이 확인란을 선택하면 읽으려는 범위의 서식이 유지된다. 기본적으로 체크 되어있지 않다.
- 'Read CSV' Activity : 이 Solution에서 'Join Data Table'과 'Filter Data Table' Activity를 사용해 DataTable을 병합하고 새로 저장하게 되는데, 병합하고 필터링 하는 조건에 DataTable의 Header로 두 개의 DataTable을 활용한다. 그러므로 'Read Range'와 'Read CSV' Activity의 Option에서 꼭 DataTable의 Header를 가지고 가야한다.
- UiPath.Excel.Activities
- Opti'on
- Delimiter : CSV 파일에서 구분기호를 지정한다. : Tab, Comma(','), Semicolon(;), Caret('^') 또는 Pipe('|').
- Encoding : 사용할 인코딩 유형. 여기에서 각 문자 인코딩에 대한 전체 코드 목록을 찾을 수 있다. 사용할 인코딩 유형을 지정하려면 Name 필드의 값을 사용한다. 인코딩 유형이 지정되지 않은 경우 activity는 인코딩을 감지하기 위해 파일의 Byte Order Marks를 검색한다. Byte Order Marks가 감지되지 않으면 ANSI 코드 페이지가 기본적으로 선택된다. 이 필드는 문자열 변수를 지원한다.
- Has headers : CSV 파일의 첫 번째 행을 헤더 행으로 간주할 지 여부를 지정한다. false로 선택하면 output DataTable에 Default Name이 있는 column이 있다.
- IgnoreQuotes : 파일을 읽을 때 따옴표를 무시할지 여부를 지정한다.
- totalLoss = totalLoss + Cint(row("InvoiceValue"));
- Cint : 숫자의 정수 부분을 반환한다.
반응형