RPA开发:UiPath入门与实战
上QQ阅读APP看书,第一时间看更新

1.1.4 流程实现

1.创建项目

打开UiPath Studio,单击“新建项目”,选择“流程”模块,弹出“新建空白流程”对话框中,在“名称”输入框中输入“金融行业机器人案例”,在“位置”输入框中输入“D:UiPath入门与实战”,单击“创建”按钮,如图1-9所示。

在“设计”工具栏中单击“新建”,选择“序列”选项,如图1-10所示。在弹出的“新建序列”对话框的“名称”输入框中输入“序列”,“位置”输入框中输入“D:\UiPath入门与实战\金融业机器人”,单击“创建”按钮,如图1-11所示。

图1-9 “新建空白流程”对话框

图1-10 选择“序列”选项

图1-11 “新建序列”对话框

下面在“序列.xaml”中进行流程的实现。

2.“数据准备”模块的实现

“数据准备”模块的功能是在流程运行前对环境和变量进行初始化,并打开浏览器将“交易数据表”下载到本地,完成汇总前的数据准备工作,其流程设计如图1-12所示。

添加一个“分配【Assign】”活动,在其左侧输入框中创建一个string类型的变量“str_Folder”,用于存储“交易数据表”的下载路径,在右侧输入框中输入文件夹地址“"D:\UiPath入门与实战\01.下载文件"”,该“分配”活动的设计及属性面板如图1-13所示。

在“活动”面板中搜索“调用代码”,如图1-14所示,将其添加到“分配”活动下方。

单击“编辑代码”,在“代码编辑器”中输入“Array.ForEach(Directory.GetFiles(str_Folder),Sub(x)File.Delete(x))”,该表达式的作用是清空参数str_Folder所指代的文件夹下的所有文件,如图1-15所示。

图1-12 “数据准备”模块的流程设计

图1-13 “分配”活动的设计及属性面板

图1-14 添加“调用代码”活动

图1-15 “调用代码”活动的代码编辑器

单击“编辑参数”,在“调用的代码参数”对话框的“名称”列输入“str_Folder”,“方向”为“输入”,“类型”为“String”,“值”为变量“str_Folder”,表示将变量str_Folder的值赋值给参数str_Folder,如图1-16所示。

接着,添加一个“打开浏览器【Open browser】”活动,在URL输入框中输入交易数据表的下载网址https://cloudlab.rpazj.com/#/parent/bankreport,如图1-17所示。

图1-16 “调用的代码参数”对话框

图1-17 “打开浏览器”活动

在属性面板中,设置“浏览器类型”为“BrowserType.Chrome”,如图1-18所示。

在“打开浏览器”活动下方添加一个“等待下载【GetLastDownloadedFile】”活动,在“监控的文件夹”中输入变量“str_Folder”。提前使用谷歌浏览器打开下载页面,然后在“等待下载”活动的执行中添加2个“单击【Click】”活动,依次单击“指明在屏幕上”后,选择页面上需下载的数据表,如图1-19和图1-20所示。

图1-18 “打开浏览器”活动的属性面板

图1-19 单击“指明在屏幕上”

完成后的“等待下载”活动如图1-21所示。

图1-20 在页面上单击下载“数据表”

图1-21 “等待下载”活动完成示意图

在“等待下载”活动下方添加一个“分配【Assign】”活动,在左侧“变量”输入框中创建一个类型为String[]的变量Arr_Files,在右侧“设置值”输入框中输入表达式“Directory.GetFiles(str_Folder,"*xls*")”,表示获取变量str_Folder指代的目录下的所有Excel文件,将其赋值给字符串数组变量Arr_Files,如图1-22所示。

图1-22 分配文件夹下文件名示意图

在“活动”面板中搜索“构建数据表”,如图1-23所示,将其添加到“分配”活动的下方。

接着单击“数据表”按钮,如图1-24所示。在“构建数据表”对话框中依次设置列名称“客户名称”“买入金额(万元)”“卖出金额(万元)”,数据类型均为String类型,如图1-25所示,单击“确定”按钮。

图1-23 添加“构建数据表”活动

图1-24 单击“数据表”按钮

在“构建数据表”活动的属性面板的“输出→数据表”输入框中创建变量“Dt_results”,用于存储构建的这张空表,其属性面板如图1-26所示。

图1-25 “构建数据表”对话框

图1-26 “构建数据表”活动的属性面板

至此,我们便完成了第一个模块“数据准备”的开发。单击“设计”工具栏中的“调试文件”运行流程,查看流程的允许情况。该模块自动打开浏览器,输入网站后单击目标文件进行下载,待文件都下载完成后流程结束。

打开下载文件的目录,查看“交易数据表”均成功下载在指定目录下,如图1-27所示。此外,我们在该模块中还初始化了Arr_Files和Dt_results,为后面模块的调用做了准备。

图1-27 下载得到的“交易数据表”

3.“数据汇总与清洗”模块的实现

“数据汇总与清洗”模块的功能是将下载得到的所有文件的数据进行合并,查找有用的字段,并将最后结果保存到result.xlsx的Sheet1工作表中,流程设计如图1-28所示。

添加“遍历循环【For Each】”活动,在“输入”输入框中输入变量“Arr_Files”,表示遍历变量Arr_Files中的所有文件,变量item为表示遍历过程中的单个遍历对象,其属性面板如图1-29所示。

图1-28 “数据汇总与清洗”模块的流程设计

图1-29 “遍历循环”的属性面板

在“遍历循环”活动的“正文”中添加“Excel应用程序范围”活动,“工作簿路径”输入变量“item”,其属性面板如图1-30所示。

在“Excel应用程序范围”活动的“执行”序列内添加“读取范围【Read Range】”活动,在“工作表名称”输入框中输入“Sheet1”,在其属性面板的“输出→数据表”输入框中创建DataTable类型的变量“Dt_values”,勾选“选项→添加标头”复选框,表示读取变量item指代的Excel文件的Sheet1工作表的数据,将其保存在变量Dt_values中。“读取范围”活动的属性面板如图1-31所示。

图1-30 “Excel应用程序范围”活动的属性面板

图1-31 “读取范围”活动的属性面板

“遍历循环”活动中的“Excel应用程序范围”的完整设计如图1-32所示。

接下来,清洗出交易数据表中的客户名称、买入金额和卖出金额。

(1)在“Excel应用程序范围”下方添加一个“对于数据表中的每一行”活动,在其“输入”输入框中输入变量“Dt_values”,变量“CurrentRow”为循环体的行变量。“对于数据表中的每一行”活动的属性面板如图1-33所示。

图1-32 “遍历循环”活动中的“Excel应用程序范围”的完整设计

图1-33 “对于数据表中的每一行”活动的属性面板

(2)在“对于数据表中的每一行”活动的“正文”序列内添加“多重分配【Multiple Assign】”活动。交易数据表中的“客户名称、买入金额(万)、卖出金额(万)”对应的是Excel数据表中的第5列、第13列和第15列数据,如图1-34所示。因此,在左侧“目标”输入框中依次创建3个String类型的变量“客户名称”“买入金额”“卖出金额”,在右侧“值”输入框中输入对应字段的值,如图1-35所示。例如,表达式CurrentRow(12).ToString表示获取当前行变量CurrentRow的第13列数据的值。

图1-34 交易数据表中的字段

(3)获取到该行所需的数据后,在下方添加一个“添加数据行【Add Datarow】”活动,在“数组行”中输入“{客户名称,买入金额,卖出金额}”以构建一个数据集合,在“数据表”中输入变量“Dt_results”,表示将这行记录添加到数据表Dt_results中。“添加数据行”活动的设计如图1-36所示。

图1-35 “多重分配”活动

图1-36 “添加数据行”活动

最终的“对于数据表中的每一行”的完整实现如图1-37所示。

在“遍历循环”的下方添加一个“Excel应用程序范围”活动,在“工作簿路径”输入框中输入“"results.xlsx"”,其属性面板如图1-38所示。

在“执行”序列中添加“写入范围”活动,在“工作表名称”输入框中输入“"Sheet1"”,“起始单元格”输入“"A1"”,在“输入→数据表”输入框中输入“Dt_results”,表示将变量Dt_results的数据写入Sheet1工作表中,如图1-39所示。

至此,该模块开发完成,运行流程后,在“项目”面板单击“刷新”图标,查看results.xlsx是否正确生成,如图1-40所示。

图1-37 “对于数据表中的每一行”活动的完整实现

图1-38 “Excel应用程序范围”活动的属性面板

图1-39 “写入范围”活动

打开results.xlsx,查看Sheet1下的数据是否正确,如图1-41所示。

图1-40 项目面板-查看results.xlsx

图1-41 result.xlsx的Sheet1工作表

4.“数据筛选”模块的实现

本模块的功能是将数据按照一定的规则筛选出大额客户,完整的流程设计如图1-42所示。

添加“Excel应用程序范围”活动,在“工作簿路径”的输入框中输入需要操作的Excel文件“"results.xlsx"”,如图1-43所示。

在“执行”序列中添加“读取范围【Read Range】”活动。接着,在“工作表名称”中输入将读取的工作表“"Sheet1"”,在第二个输入框中输入读取范围“A1”,表示从A1单元格开始读取该工作表的所有数据,如图1-44所示。

图1-42 “数据筛选”模块的流程设计

图1-43 “Excel应用程序范围”活动

然后,在其属性面板的“输出→数据表”中创建一个DataTable类型的变量“Output_results”,用于存储读取到的数据,并勾选“添加标头”复选框,如图1-45所示。

图1-44 “读取范围”活动

图1-45 “读取范围”活动属性面板

在“读取范围”活动的下方,添加“筛选数据【FilterDataTable】”活动。在“数据表”输入框中输入变量“Output_Results”,作为被筛选的对象,在“筛选过的数据表”输入框中创建一个DataTable变量“Filter_results”,用于存储筛选后的数据,如图1-46所示。

单击“配置筛选器”按钮,在“筛选器向导”对话框中,可先确认“输入数据表”和“筛选过的数据表”是否正确。然后,在“筛选行”选项卡下设置数据行的筛选条件,即“"买入金额(万元)">=1000 Or"卖出金额(万元)">=1000”,如图1-47所示。

图1-46 “筛选数据表”活动

图1-47 “筛选行”设置

单击“输出列”切换至“输出列”选项卡,在“列”下依次添加“"客户名称"、"买入金额(万元)"、"卖出金额(万元)"”,表示输出的数据表Filter_results的列项为这三列,如图1-48所示。

“筛选数据表”活动的属性面板如图1-49所示。

在“筛选数据表”活动下方添加“写入范围”活动,在“目标→工作表名称”输入框中输入“"Sheet2"”,在“起始单元格”输入框中输入“"A1"”,在下方的“输入→数据表”输入框中输入变量“Filter_results”,表示将筛选后的数据Filter_results写入Sheet2工作表内,从A1单元格开始写入,该活动如图1-50所示,其属性面板如图1-51所示。

图1-48 “输出列”设置

图1-49 “筛选数据表”活动的属性面板

图1-50 “写入范围”活动

图1-51 “写入范围”活动的属性面板

图1-52 大额交易客户筛选结果示意图

至此,该模块开发完成,运行流程查看流程运行有无异常。流程执行完毕后,打开results.xlsx查看Sheet2中的数据是否都正确,“买入金额(万元)”或“卖出金额(万元)”的客户名称及交易是否都被正确筛选出,如图1-52所示。

5.“结果数据显示”模块的实现

本模块的功能是通过日志消息将大额交易的“客户名称”输出在日志中,该模块的流程设计如图1-53所示。

添加“Excel应用程序范围”活动,在“工作簿路径”输入框中输入“"results.xlsx"”,如图1-54所示。

在“Excel应用程序范围”的“执行”序列中添加“读取列”活动,在“工作表”输入框中输入“"Sheet2"”,在“起始单元格”输入框中输入“"A1"”,表示读取Sheet2工作表的A1列数据,如图1-55所示。

在其属性面板的“输出→结果”输入框中创建变量“Dt_Clientname”,其属性面板如图1-56所示,表示将读取到的A1列存储在变量Dt_Clientname中。

在“读取列”活动下方添加“遍历循环”活动,在“输入”输入框中输入变量“Dt_Clientname”,然后在其正文中添加“日志消息”活动,“日志级别”选择“Info”,在“消息”输入框中输入“item”,将客户名称遍历后依次输出,如图1-57所示。

最后运行流程,在“输出”面板中查看大额交易的客户名称被正确输出,如图1-58所示。

图1-53 “结果数据显示”模块的流程设计

图1-54 “Excel应用程序范围”活动

图1-55 “读取列”活动

图1-56 “读取列”活动的属性面板

图1-57 “遍历循环”活动

图1-58 大额交易的客户名称