Bài học này Tui tiếp tục hướng dẫn các bạn cách tạo một quy trình tự động bằng UiPath Studio để tự động đọc dữ liệu danh sách bảng điểm một môn học của các Sinh viên trong 1 File Excel gồm các cột điểm Quá Trình, Giữa Kỳ, và Cuối Kỳ. Sau đó lưu thành một File Excel mới bổ sung thêm cột điểm trung bình GPA là (30% quá trình+ 20% giữa kỳ +50% cuối kỳ) và kết quả đậu nếu GPA >=5 hay rớt nếu GPA<5.

Các kiến thức và các Activity được trình bày trong bài học này gồm:
- Input Dialog Activity
- Assign Activity
- MessageBox Activity
- Excel Process Scope Activity
- Add Data Column Activity
- Use Excel File for reading data Activity
- For Each Row in DataTable Activity
- Use Excel File for writting data Activity
- Write DataTable to Excel Activity
- Cách cấu hình các biến, giá trị
- Tích hợp C# coding for tự động hóa
Toàn bộ tiến trình của dự án tự động hóa này được tổng quát như hình dưới đây:

File Excel dữ liệu mẫu các bạn tải ở đây về máy của các bạn để thử nghiệm với dự án tự động hóa này nhé:
https://www.mediafire.com/file/yp6axbliccefuuo/Students-Score.xlsx/file
Bây giờ các Bạn làm theo từng bước Tui hướng dẫn nhé:
Bước 1: Tạo dự án
Khởi động UiPath Studio và tạo dự án loại Process, tên dự án là”ReadAndWriteGPAExcel“, nếu bạn chưa biết cách tạo dự án thì xem lại bài này

Sau khi nhấn “Process“, màn hình New Blank Process xuất hiện như dưới đây:

Sau đó bạn nhập Name (tên dự án), Description(mô tả dự án), chỉnh localtion và ngôn ngữ lập trình như dưới đây:

- Name: ReadAndWriteGPAExcel
- Description: Read students score in Excel then write GPA into new Excel
- Localtion: Chọn nơi muốn lưu trữ dự án
- Compatibility: Chọn Windows
- Language: Chọn ngôn ngữ lập trình C#
Sau đó nhấn nút “Create”, xem kết quả tạo dự án “ReadAndWriteGPAExcel”:

Bước 2: Kéo thả Input Dialog Activity

Bạn vào thẻ “Activities” sau đó gõ từ khóa Input để tìm Input Dialog Activity, rồi bạn kéo thả Activity nào vào màn hình chính như hình minh họa, sau khi kéo thành công ta có kết quả như hình dưới đây:

Tiến hành nhập liệu Dialog Title và Input Label:

- Dialog Title tiêu đề của cửa sổ, bạn nhập để trong nháy đôi vì nó là chuỗi: “Input Students Score Excel”
- Input Label là ô tiêu đề chỗ nhập liệu, bạn gõ: “Please enter the path of Excel file:”
- Input Type để mặc định là Text Box
Khi chạy lên thì ta có giao diện Input Dialog như sau:

Người sử dụng sẽ nhập đường dẫn file Excel gốc dữ liệu điểm rồi nhấn OK, như vậy làm thế nào để ta lưu được tên đường dẫn nào vào bộ nhớ để xử lý? đó chính là phần cấu hình Value Entered ở ô cuối cùng trong Input Dialog Activity:

Cách tạo biến là bạn đã được học rồi, bạn di click chuột vào ô Value entered rồi gõ tổ hợp phím Ctrl+K hoặc bấm vào dấu + rồi chọn Create Variable. Bạn đặt tên biến là “input_excel_path” kiểu dữ liệu là string, và Scope chuyển qua Main Sequen như hình Tui chụp ở trên.
Bước 3: Kéo thả Excel Process Scope Activity

Bạn tiếp tục gõ từ khóa “Excel Scope” trong mục tìm kiếm Activities, sau đó nhấn và kéo thả “Excel Process Scope” vào màn hình chính, nối đuôi nó đằng sau Input Dialog Activity ở bước 2. Sau khi kéo thả Activity này vào bạn thấy kết quả như sau:

Bạn chờ cho hệ thống tải hết các thư viện liên quan, nếu có màn hình nào đó xuất hiện như dưới đây thì nhấn “I Accept”:

Sau khi nhấn “I Accept”, bạn sẽ thấy kết quả hiển thị như sau:

Excel Process Scope Activity cho phép ta tương tác với tập tin Excel thậm chí bạn không cần cài Office.
Activity này có mục Do, ta kéo Activity Use Excel File để đọc dữ liệu Excel theo đúng tiến trình đã vạch ra ở trên:
Bước 4: Kéo thả Use Excel File activity

Trong mục Activities bạn gõ “Use excel” để tìm kiếm Activity này, sau đó kéo thả nó vào màn hình chỗ vùng Do như hình minh họa ở trên. Kết quả:

Activity Use Excel File sẽ nhận vào đường dẫn file Excel mà người sử dụng nhập từ Input Dialog Activity, sau đó nó đọc toàn bộ dữ liệu trong File Excel này và lưu vào DataTable để xử lý.
Như vậy trong mục “Excel File” bạn gõ tên biến “input_excel_path“, xem hình:

Tiếp tới ta cần đọc toàn bộ dữ liệu trong “input_excel_path” vào DataTable, để làm được điều này ta sử dụng Read Range Activity trong mục Do.
Bước 5: Kéo thả Read Range Activity

Tương tự trong ô tìm kiếm Activities, bạn gõ từ khóa “read range” rồi kéo thả “Read Range” Activity vào mục Do trong Use Excel File như hình minh họa ở trên, kết quả:

- Mục Range chính là khung dữ liệu/vùng dữ liệu trong File Excel mà phần mềm sẽ đọc
- Has headers bạn checked vào vì chúng ta có sử dụng dòng tiêu đề
- Visible rows only: Chỉ dọc các dòng Excel có dữ liệu
- Save to là sau khi đọc xong thì lưu vào đâu
Ta nhấn vào biểu tượng hình vuông ở mục Range để mở màn hình “Expression Editor” và gõ các mã lệnh như hình dưới đây:

Mã lệnh ở trên sẽ đọc toàn bộ dữ liệu bao gồm dòng tiêu đề của file Excel đầu vào. Tui cùng cấp mã lệnh ở đây để bạn copy paste vào cho lẹ:
Excel.Sheet["Sheet1"].Range["A1:E"+Excel.Sheet["Sheet1"].RowCount]
Coding ở trên là đọc dữ liệu từ cột A tới cột E dòng đầu tiên cho hết dòng cuối cùng (thuộc tính RowCount trả về số dòng thực sự trong file Excel có dữ liệu).
Sau khi nhập mã lệnh, bạn nhấn nút Save, ta thấy kết quả:

- Mục Save to: Bạn gõ tổ hợp phím Ctrl+K để tạo tên biến dt_input có kiểu DataTable, Scope là Main Sequen như hình trên Tui chụp.
Bước 6: Kéo thả Add Data Column Activity cho GPA
Bởi vì dữ liệu đầu vào chỉ có: Mã, tên, điểm quá trình, điểm giữa kỳ và điểm cuối kỳ. Ta cần bổ sung thêm 2 cột là GPA và Decision.
- GPA = 30% quá trình + 20% giữa kỳ + 50% cuối kỳ
- Decision: Nếu GPA <5 là rớt, ngược lại là đậu

Trong mục Activities bạn gõ từ khóa “add data column” để tìm activity, sau đó bạn kéo thả “Add Data Column” activity vào giao diện thiết kế như hình ở trên, kết quả:

Bạn nhập dữ liệu như sau cho Add Data Column Activity:
- Column Name: nhập “GPA”
- Data Table: gõ tên biến DataTable dt_input vào

Bước 7: Kéo thả Add Data Column Activity cho Decision
Ở bước 6 ta có GPA, bước 7 sẽ dựa vào GPA để đưa ra quyết định là Sinh viên đậu hay rớt, ta bổ sung cột Decision, cách làm như bước sau:

Khi bước 6 và bước 7 thực hiện thành công thì ta sẽ có dữ liệu dt_input như sau (Tui đưa mẫu để bạn dễ tưởng tượng, khi nào tới các bài Debug các bạn sẽ tự xem trong bộ nhớ):
MSSV | Name | On-Going | Midterm | Final | GPA | Decision |
112 | John | 9 | 8 | 3 | ||
113 | Tom | 2 | 3 | 5 | ||
114 | Peter | 8 | 5 | 7 | ||
115 | Lila | 3 | 4 | 4 | ||
116 | David | 7 | 9 | 8 |
Như vậy, rõ ràng chúng ta cần xử lý các công thức toán học để tính giá trị cho các cột GPA và Decision. Quan sát thì bạn có thể suy luận là chúng ta sẽ dùng vòng lặp từ dòng Sinh viên đầu tiên cho tới dòng Sinh viên cuối cùng, mỗi lần lặp ta sẽ áp dụng công thức để tính GPA và Decision:
- GPA = 30% quá trình (On-Goding) + 20% giữa kỳ (MidTerm) + 50% cuối kỳ (Final)
- Decision: Nếu GPA <5 là rớt, ngược lại là đậu
Bước 8: Khai báo biến current_index
Bạn mở thẻ Variable lên, nhấn vào “create variable” để tạo tên biến:

Biến current_index này sẽ được xử lý tăng từ 0 cho tới số dòng dữ liệu trong excel -1, dựa vào biến này để ta đọc dữ liệu từng ô trong mỗi dòng để lấy ra các điểm Quá trình, giữa kỳ, cuối kỳ sau đó ráp vào công thức tính cho GPA và Decision.
Bước 9: Kéo thả For Each Row In Data Table Activity

Trong chỗ tìm kiếm Acvitities, bạn gõ từ khóa “for each row” rồi kéo thả For Each Row in Data Table activity vào màn hình như Tui chụp, đặt nó đằng sau Add Data Column của cột Decision, kết quả:

- Data Table: Bạn gán biến dt_input

Activity For Each Row in Data Table sẽ nhận vào biến dt_input, nó sẽ lặp từng dòng dữ liệu. Ở đây có biến CurrentRow trong mục Item name, nó có thể được dùng để truy suất trực tiếp các cột và ô dữ liệu, tuy nhiên bài này ta chưa sử dụng, mà ta sử dụng theo index, biến current_index mà ta khai báo ở trên.
Mục Body là ta cần xử lý để ráp công thức cho GPA và Decision, cũng như điều khiển thay đổi vị trí dòng mà chúng ta đọc cho dữ liệu trong Excel biến current_index. Do đó ta sẽ sử dụng 3 Activity Assign để xử lý.
Bước 10: Kéo thả Assign Activity cho cột GPA

Trong mục tìm Activities, bạn gõ từ khóa “Assign” rồi kéo thả Assign Activity vào màn hình như Tui minh họa ở trên, kết quả:

Tiếp theo ta nhập công thức cho cột GPA như sau:

- Save to, đây là giá trị cho cột GPA ở mỗi dòng current_index ta viết lệnh, cột vị trí 5 là cột GPA:
dt_input.Rows[current_index][5]
- Value to save, là công thức ta tính toán cho GPA:
double.Parse(dt_input.Rows[current_index][2].ToString())*0.3+
double.Parse(dt_input.Rows[current_index][3].ToString())*0.2+
double.Parse(dt_input.Rows[current_index][4].ToString())*0.5
Tương tự như vậy ta kéo thêm Assign Activity để xử lý chột Decision:
Bước 11: Kéo thả Assign Activity cho cột Decison
Ta kéo thả tương tự như GPA, rồi nhập công thức như dưới đây:

- Coding cho Save to của Decision:
dt_input.Rows[current_index][6]
- Coding cho Value to Save của Decision:
Double.Parse(dt_input.Rows[current_index][5].ToString()) >= 5 ? "Passed" : "Failed!"
Tiếp theo, biến current_index cần tăng lên 1 đơn vị để chương trình tự động đọc dữ liệu ở các dòng tiếp theo:
Bước 12: Kéo thả Assign Activity cho biến current_index

Tương tự, bạn kéo thả Assign Activity vào màn hình như minh họa, kết quả:

- Save to là biến current_index
- Value to save: current_index+1
Mỗi lần lặp, biến current_index sẽ tăng lên 1, vòng lặp sẽ kết thúc khi current_index bằng với số dòng dữ liệu thực tế trong file Excel.
Như vậy, sau khi bước 12 thực hiện xong thì toàn bộ dữ liệu sẽ được fill đầy cho dt_input (GPA và Decision):
MSSV | Name | On-Going | Midterm | Final | GPA | Decision |
112 | John | 9 | 8 | 3 | 5.8 | Passed |
113 | Tom | 2 | 3 | 5 | 3.7 | Failed! |
114 | Peter | 8 | 5 | 7 | 6.9 | Passed |
115 | Lila | 3 | 4 | 4 | 3.7 | Failed! |
116 | David | 7 | 9 | 8 | 7.9 | Passed |
Ta cần xuất dt_input này ra file excel theo yêu cầu của người dùng.
Bước 13: Kéo thả Input Dialog Activity cho kết quả Excel output
Như vậy ngoài vòng lặp for each này ta sẽ tiến hành lưu dt_input ra file excel theo người sử dụng nhập vào:

Tương tự trong mục Activities ta tìm từ khóa “input dialog” rồi kéo thả activity nào vào quy trình, kéo nó ở ngoài For Each Row in Data Table:

Sau đó ta cấu hình:
- Dialog Title: “Output Excel with GPA and Decision”
- Input Lable: “Enter output Excel path for Result:”
Người dùng sẽ nhập vào tên file excel và nơi lưu trữ, ta cần lưu lại đường dẫn này bằng cách khai báo biến output_excel_path trong mục Value entered như hình trên.
Bước 14: Kéo thả Use Excel File để lưu dt_input ra file mới

Trong mục Activities bạn gõ từ khóa “use excel” sau đó kéo thả Activity này vào ngay bên dưới Input Dialog ở bước 13, kết quả:

- Excel path: nhập tên biến “output_excel_path ” được lưu trữ ở bước trước

Trong mục Do, ta kéo Activity Write DataTable to Excel để lưu dt_input ra file mới
Bước 15: Kéo thả Write DataTable to Excel để lưu dt_input ra file mới

Ta gõ từ khóa “write datatable to excel” trong Activities rồi kéo thả Activity này vào mục Do như hình minh họa ở trên, kết quả:

- What to write: Chíng là DataTable mà ta muốn lưu
- Destination: là vùng mà DataTable sẽ được lưu trong file excel

Bạn quan sát thấy Tui nhập:
- What to write: dt_input
- Destination: Excel.Sheet[“Sheet1”].Range[“A1”], có nghĩa là Tui muốn lưu dt_input bắt đầu tư ô địa chỉ A1 trong file Excel
Bước 16: MessageBox để thông báo lưu dt_input ra file mới thành công
Khi chương trình lưu excel mới cho dt_input với đầy đủ GPA và Decision thì Ta cần thông báo để người sử dụng biết, Message Box Activity này nên đặt ở ngoài Use Excel Process Scope vì lúc này nó không liên quan gì tới xử lý Excel:

Bạn tìm và kéo thả MessageBox Activity như hình minh họa và xem kết quả:

Ta nhập dữ liệu thông báo:

Cuối cùng ta có Process đầy đủ của dự án tự động hóa này:

Thực thi dự án tự động hóa này, ta có kết quả như sau:

Bạn có thể tải full source code dự án tự động hóa này ở đây:
https://www.mediafire.com/file/qcs2g2zi7vqizkt/ReadAndWriteGPAExcel.rar/file
Như vậy Tui đã hướng dẫn xong chi tiết quá trình tạo một dự án tự động hóa về đọc dữ liệu Excel điểm thành phần của Sinh viên và tự động tạo ra các cột GPA, Decision rồi xuất ra file Excel mới.
Bài học tiếp theo, Tui sẽ trình bày chi tiết về “Tạo, xuất bản và sử dụng thư viện trong các quy trình tự động hóa” đây là một trong các chức năng rất hữu dụng của RPA, giúp ta tiết kiệm thời gian và công sức, tái sử dụng nhanh chóng.
Các bạn chú ý theo dõi
Chúc các bạn thành công
p/s: Toàn bộ các bài học liên quan tới Tự động hóa quy trình bằng Robot được tổng hợp tại link https://tranduythanh.com/robotic-process-automation/, các bạn vào trang này và kéo xuống có thể theo dõi từng bài theo chươngĐăng ký và tải phần mềm UiPath Studio