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

 

Invoices.xlsx / Client.csv 파일

 


Practice 2 Solution

엑셀 파일의 송장 중 파산한 고객에게 발행된 송장을 확인하고 손실로 기록할 송장의 합계를 계산한다.

 

Practice 2 Solution

📌 설정방법

  1. 'Read Range' activity를 사용하여 .xlsx 파일을 읽고 새로 만든 DataTable 변수("invoicesDT")에 저장한다.

  2. 'Read CSV' activity를 사용하여 .csv 파일을 읽고 새로 만든 DataTable변수("clientsDT")에 콘텐츠를 저장한다.

  3. 'Join Data Tables' activity를 사용하여 두 변수의 데이터를 새 변수("resultDT")에 통합한다.
    Input Data Table1은 "clientsDT"이고, Input Data Table2는 "invoicesDT"여야한다.
    두 DataTables의 "Client Name"을 column의 Join 기준 및 "Left" Join Type으로 사용한다.
    (두번째 DataTable에서 Client에 대해 발행 된 송장만 유지하도록)

  4. '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 변수에 저장한다.

  5. 파산한 회사의 손실을 계산하려면 필터링 된 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"));

  6. '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 Rang Activity의 Option > PreserveFormat 체크 여부에 대한 엑셀 결과물

  • '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 : 숫자의 정수 부분을 반환한다.

 

반응형