到目前为止,我们已经了解了RPA的基本知识,以及如何使用流程图或序列来组织工作流中的步骤。我们现在了解了UiPath组件,并对UiPath Studio有了全面的了解。我们用几个简单的例子制作了我们的第一个机器人。在我们继续之前,我们应该了解UiPath中的变量和数据操作。它与其他编程概念没有太大区别。但是,在这里我们将了解UiPath数据处理和操作的细节。
本章将主要讨论数据操作。数据操作是更改数据的过程,无论是添加、删除还是更新数据。在学习数据操作之前,我们将了解变量、集合和参数是什么,它们存储的数据类型,以及它们的范围是什么。然后,我们将举出各种数据操作示例。我们还将学习存储和检索数据。
在本章中,我们将介绍:
- 变量和工作流中变量的范围
- 集合,如何将数据存储在数组中,以及如何遍历它们
- 参数,我们为什么需要它们,以及如何使用它们
- 剪贴板使用
- 数据抓取
- 文件管理(带示例)
- 数据表使用示例
变量和范围
在讨论变量之前,让我们看看存储器及其结构:
存储器由数百万个存储器单元组成,每个存储器单元以0和1(二进制数字)的形式存储数据。每个单元格都有一个唯一的地址,通过使用此地址,可以访问该单元格:
当数据存储在内存中时,其内容会被拆分为更小的形式(二进制数字)。如上图所示,2字节的数据由几个存储单元组成。
变量是一个特定的内存单元块或简单的内存块的名称,用于保存数据。
您可以声明任何所需的名称并创建一个变量来存储数据
但是,建议我们使用有意义的变量名。例如,如果我们希望创建一个变量来存储一个人的名字,那么我们应该声明
类型 | 内容 |
Integer
| 整数 |
String
| 字符串,任何类型的文本 |
Boolean
| 布尔,True or false |
Generic
| 都可以 |
在UiPath中,我们可以在变量部分声明一个变量。只需给它一个有意义的名称,然后从下拉列表中选择合适的类型。
对于一个有意义的变量,它意味着变量名称不应该是模糊的。尽量使其具有描述性,以便阅读代码的人理解变量的用途。好的例子是daysDateRange,flightNumber,carColour. 不好的例子:days,dRange,temp和date.
我们还可以指定变量的范围。范围是指数据具有效力或可用性的区域。您可以根据自己的要求选择变量的范围;尽量限制它。请参阅以下屏幕截图以了解变量面板:
出于安全原因,将变量的Scope设置为最满不是一个好的做法,因为它可能会被另一个区域意外访问或被修改。
让我们举一个例子,创建一个变量,然后使用该变量显示一个消息框:
- 我们在变量部分声明了一个变量为name,并将其默认值设置为"Hello world"。默认情况下,变量的类型为String(我们可以根据需要更改其类型)。
- 在“活动”面板中搜索"消息框"。将该消息框模板拖放到流程图中。
- 右键单击消息模板,然后选择“set as Start Node”:
- 双击消息框模板并指定我们之前创建的变量名。在这个阶段,我们只需单击run按钮即可运行我们的应用程序:
将弹出一个对话框,其中显示“Hello,World”文本。
集合
有不同类型的变量。变量可分为三类:
- 标量:例如,这些变量只能容纳特定数据类型的单个数据点;字符、整数、双精度等等。
- 集合:这些变量可以保存一个或多个特定数据类型的数据点。例如数组、列表、字典等等。
- 表:这些是由行和列组成的数据结构的表格形式。
在本节中,我们将了解集合是如何工作的,以及如何在集合变量中存储值。
在集合中,我们可以存储一个或多个数据点,但所有数据必须相同。考虑一个例子。数组是一个集合,我们可以在其中存储特定数据类型的不同值。它是一种固定的数据类型,这意味着如果我们在数组中存储五个值,我们就无法添加或删除该数组中的任何值。
对象是一种数据类型,您可以在其中存储任何类型的数据。因此,如果我们采用一个对象数组,那么我们可以在一个数组中存储不同类型的数据。这是一个例外情况。
让我们看看如何通过一个例子使用数组。在本例中,我们将获取一个整数数组,对其进行初始化,然后迭代该数组的所有元素:
- 将流程图活动拖放到设计器主面板上,然后将序列活动拖放到流程图内。将序列设置为“开始”节点。
- 在变量面板中创建一个变量,并给它一个有意义的名称(在本例中,我们创建了一个名为BSS的变量,它是一个整数数组)。选择数据类型作为整数数组。
- 我们已在“默认”部分将数组初始化为“new int[]{1,2,3,4}”。您可以使用int32数据类型对其进行初始化:
- 从序列内的Activities(活动)面板中拖放Foreach(遍历循环活动),并在For each活动内拖放Message box(消息框)活动。
- 在For each活动的表达式文本框中指定数组名称。
- 指定由For each活动在Message box活动内自动生成的currentItem变量。但是请稍等,我们必须将currentItem变量转换为String类型,因为Message box活动在文本框中需要字符串数据类型。currentItem变量后只需按下点,然后选择ToString方法:
点击Run按钮查看结果。所有值将顺序弹出。
在这个例子中,我们已经看到了初始化数组和迭代数组是多么容易。
参数的目的和用途
参数只是一个可以存储值的变量。您可以在“设计器”主面板的“参数”部分创建一个参数。
但请记住,它们并不局限于变量。参数的作用域比变量大,用于在不同工作流之间传递值。你可能想知道我们为什么需要这个。假设我们有一个大项目要建;我们将项目分解为不同的工作流,因为较小的工作流可以很容易地单独测试。构建较小的工作流并将它们组合在一起非常容易,从而将它们变成项目的真正解决方案。
这些参数用于通过在不同工作流之间交换数据来与它们交互。这就是方向属性与参数关联的原因。我们可以根据自己的需求选择方向,要么为某个工作流提供值,要么从另一个工作流接收值。
我们可以在“参数”面板中轻松创建参数。我们还可以指定方向:
- In(输入):当我们必须从另一个工作流接收值时。
- Out(输出):如果我们必须将值发送到工作流,则这是当前值。
- In/Out:指定两者;它可以获取或接收该值。
- 属性:这指定当前未使用它:
数据表使用示例
数据表是数据结构的一种表格形式。它包含行,每行都有列,例如:
Student name
|
Roll number
|
Class
|
Andrew Jose
| 1 | 3 |
Jorge Martinez
| 2 | 3 |
Stephen Cripps
| 3 | 2 |
上图是一个具有三行三列的数据表示例。你也可以在UiPath中构建数据表。
数据表用于各种用途。例如,您必须动态地构建一个表。您可以使用数据表作为首选。数据表也广泛用于存储表格数据结构。在数据抓取中,数据表被广泛使用。数据抓取是一种我们可以在网上动态创建搜索项目的表格数据记录的方法。
我们将在两个项目中使用数据表:
- 构建数据表
- 使用数据抓取(动态)构建数据表
构建数据表
让我们看看,如何构建数据表是可以构建的。首先,创建一个空项目。给它一个恰当的名字:
- 将流程图活动拖放到“设计器”面板上。此外,拖放“序列”活动,并将其设置为“开始”节点。
- 双击“序列”并将“构建数据表”活动拖放到“序列”活动中。
- 单击“数据表”按钮。屏幕上将出现一个弹出窗口。单击“删除列”图标,删除这两列(由“生成数据表”活动自动生成):
- 现在,我们将通过简单地单击+符号来添加三列。指定列名并从下拉列表中选择适当的数据类型。单击“确定”按钮。我们将添加字符串数据类型的列Name,Int32类型的列RollNo,最后是字符串类型的列Class:
- 现在输入一些随机值,以便将数据插入行中:
单击“确定”按钮,我们的数据表就准备好了。我们必须对数据表的行进行迭代,以确保一切正常。 - 为了存储“构建数据表”活动创建的数据表,我们必须创建一个DataTable类型的数据表变量MyDataTable,以便存储我们动态构建的数据表的结果。此外,指定使用此变量为“生成数据表”活动的“输出”属性赋值。在那里指定数据表变量的名称。
- 数据表准备好后,我们将迭代数据表的行,以确保一切正常。从Sequence活动内的Activities面板中拖放For each row活动。在For each row活动的表达式文本框中指定数据表变量的名称(MyDataTable):MyDataTable.Rows
For each和For each是两个不同的活动。For each用于迭代集合,而For each row活动用于迭代数据表行。 - 在For each row活动中拖放一个Message box活动。在消息框活动中,在消息框内,我们必须编写以下字符串:CurrentRow["Name"].ToString()+"-"+CurrentRow["RollNo"].ToString()+"-"+CurrentRow["Class"].ToString()
在每次迭代中保持数据行的数据的变量:
此行变量包含特定行的所有列。因此,我们必须通过指定列名来指定要检索的列值。除了列名,我们还可以指定列索引(列索引总是从零开始)。点击Run按钮查看结果。
使用数据抓取(动态)构建数据表
使用数据抓取,我们可以在运行时构建数据表。让我们考虑一个从亚马逊网站提取数据的例子。执行以下步骤:
- 从“活动”面板中拖放流程图活动,并在流程图活动内拖放序列活动。
- 双击序列活动。
- 将“打开浏览器”活动拖放到“序列”活动中。在文本框中指定URL:
https://www.amazon.com/s?k=book%20for%20kids&i=stripbooks-intl-ship&ref=nb_sb_ss_ts-doa-p_1_13&crid=7R72A5STVRAH&sprefix=book%20for%20kids%2Cstripbooks-intl-ship%2C365 - 单击UiPath Studio左上角的“数据抓取”图标。将弹出一个窗口。单击“下一步”按钮。
- 它会要求你指向网页上的元素:
- 指向该网页上的元素。指定要为提取的数据列指定的名称。(它将成为提取数据的列名)。单击“下一步”按钮。
- 名称列表将显示在一个单独的窗口中。
- 如果您想提取更多信息,请单击“提取相关数据”按钮,然后再次重复相同的过程(就像我们从亚马逊网站提取书名一样)。否则,请单击“完成”按钮:
- 数据抓取生成一个数据表。(在这种情况下,将生成ExtractDataTable)将ExtractDataTable的范围更改为流程图,以便在流程图活动中可以访问:
- 在流程图上拖放“输出数据表”活动。将Output数据表活动的Output属性设置为:ExtractDataTable:
- 将“输出数据表”活动连接到“数据抓取”活动。在“设计器”窗口上拖放“消息框”活动。还要创建一个字符串变量来接收来自输出数据表活动的文本(在我们的例子中,我们创建了一个result变量)。
将输出数据表活动的文本属性指定为result变量,以从输出数据表接收文本: - 将“消息框”活动连接到“输出数据表”活动。双击“消息”框,并将文本属性指定为result变量(您为从输出数据表活动接收文本而创建的变量)。
- 点击Run(运行)按钮,查看结果。
剪贴板管理
剪贴板管理涉及管理剪贴板的活动,例如,从剪贴板获取文本、从剪贴板复制选定的文本等等。
让我们看一个从剪贴板获取文本的示例。
在本例中,我们将使用记事本。我们将打开记事本,在其中写入一些数据,然后将数据复制到剪贴板。然后,我们将从剪贴板中提取数据:
- 从活动面板中拖放流程图活动。
- 单击UiPath Studio顶部的录制图标。单击“录制”。
- 单击Notepad打开它。将弹出Notepad窗口:
- 单击记事本的文本区域。在对话框中键入并选中空字段。(在写入任何新数据之前,选中空字段将擦除记事本中的所有现有数据。)按Enter键。
数据将写入记事本文本区域: - 单击编辑按钮。将出现一个弹出窗口,询问您是否要使用锚点。(锚点是当前{foucus}的相对元素元素。)您可以清楚地看到,“编辑”按钮的锚点元素可以是“文件”或“格式”按钮。在这种情况下,我们选择了“格式”按钮:
- 然后,它将自动开始识别“编辑”按钮。从下拉列表中选择全选选项:
- 再次单击“编辑”按钮。它将再次要求您指示锚点元素。指示锚定按钮,编辑按钮将高亮显示,并为您提供一个下拉框。选择“复制”选项:
- 此复制的文本现在存储在剪贴板中。
我们可以使用“从剪贴板获取”和“复制选定的文本”活动来复制存储在剪贴板中的文本。
我们将使用“复制选定文本”活动。
- 双击由录制生成的录制序列。向下滚动并拖放录制序列中的复制选定文本和消息框活动:
- 创建一个String类型的变量来存储“复制选定文本”的输出值。此变量将通过“复制所选文本”活动从剪贴板接收所需文本。现在,在“复制选定文本”活动的“输出”属性中指定新创建的变量。这将是我们复制到剪贴板中所需的选定文本。
- 在“消息框”活动的文本属性中指定字符串变量。
- 点击Run按钮查看结果。
一步步操作文件的示例
在本模块中,我们将对Excel文件进行操作。以下是Excel文件中经常使用的方法:
- 读取单元格
- 写入单元格
- 读取范围
- 写入范围
- 附加范围
一旦你熟悉了这些方法,你也会很容易使用其他方法。
读取单元格
它用于从Excel文件中读取单元格的值。我们有一个示例Excel文件,将在本例中使用:
假设我们必须读取B3单元格的值:
- 将流程图活动拖放到设计器主面板上。此外,在流程图中拖放"使用Excel文件"。将其连接到“开始”节点。双击“使用Excel文件”。
- 将“读取单元格”活动拖放到使用Excel文件。在“读取单元格”活动的单元格文本框中指定范围值。创建一个字符串类型的变量,以保存“读取单元格”活动产生的结果。在我们的案例中,我们创建了一个Result变量。通过提供我们创建的变量名称来指定“读取单元格”活动的Output属性:
- 将“消息框”活动拖放到Excel应用程序范围活动中,并在“消息框活动”的表达式框中指定字符串变量的名称(我们之前创建的名称)。
就这样。按F5键查看结果。
写入单元格
此活动用于在Excel文件的单元格中写入值:
- 将流程图活动拖放到设计器主面板上。此外,在流程图活动中拖放“使用Excel文件”。将其连接到“开始”节点。
- 在"使用Excel文件"内拖放“写入单元格”活动。在“写入单元格”活动的“范围”属性中指定要写入的单元格值。此外,指定value属性的值:
- 按F5键查看结果。打开Excel文件查看更改:
读取范围
这用于读取指定范围内的值。如果未指定范围参数,它将读取整个Excel文件:
- 将流程图活动拖放到设计器主面板上。此外,在流程图活动中拖放“使用Excel文件”。将其连接到“开始”节点。
- 将“读取范围”活动拖放到“使用Excel文件”活动内。读取范围活动生成一个数据表。我们必须接收此数据表才能使用它。我们需要创建一个数据表变量,并在Read Range活动的Output属性中指定它。
- 将“输出数据表”活动拖放到Excel应用程序范围活动中。现在,我们必须指定输出数据表活动的两个属性:数据表属性和文本属性。“输出数据表”活动的“数据表”属性用于将数据表转换为字符串格式。text属性用于以字符串格式提供其值。我们必须接收这个值才能使用它。为此,让我们创建一个字符串类型的变量。给它取一个有意义的名字(在我们的例子中,它是Result):
- 将“消息框”活动拖放到Excel应用程序范围活动中。此外,指定我们之前在Message box活动中创建的字符串变量的名称:
- 就这样。按F5键查看结果。将弹出一个窗口,显示您的Excel文件数据。
写入范围
这用于将行集合写入Excel工作表。它以数据表的形式写入Excel文件。因此,我们必须提供一个数据表:
- 从Activities(活动)面板中拖放Build data table(构建数据表)活动。双击此活动。将弹出一个窗口。您会注意到,已经自动生成了两列。删除这两列。单击+图标添加列并指定列名。您也可以选择自己喜欢的数据类型。您可以自由添加任意数量的列:
- 在这个项目中,我们将添加两列。添加第二列的过程几乎相同。您只需要指定一个名称及其首选数据类型。我们又添加了一列(Roll),并将数据表的数据类型设置为Int32。我们还通过在数据表的行中提供一些值来初始化该数据表。
创建数据表类型的变量。给它取一个有意义的名字。在“生成数据表”活动的“数据表”属性中指定此数据表名称。我们必须提供这个变量才能获得我们构建的数据表:
我们的数据表已经成功构建。 - 在“设计器”主面板内拖放“使用Excel文件”。您可以指定Excel工作表路径,也可以手动选择。将此活动连接到“生成数据表”活动。在使用“使用Excel文件”中,只需拖放“将数据表写入到Excel””活动:
- 就是这样。点击Run按钮或按F5键查看结果。
附加范围
这用于将更多数据添加到现有Excel文件中。数据将附加到末尾。
- 将流程图活动拖放到设计器主窗口上。此外,在流程图活动中拖放"使用Excel文件"。将其连接到“开始”节点。
追加范围活动需要一个数据表。在这个程序中,我们将使用另一个示例Excel文件,其中包含一些原始数据。然后,我们将读取此Excel文件,并将数据附加到另一个Excel文件中。
首先,我们必须阅读其内容:
- 将“读取范围”活动拖放到使用Excel文件活动中。读取范围活动生成一个数据表。我们必须接收此数据表才能使用它。创建一个数据表变量,并在读取范围活动的Output属性中指定它:
- 将“附加范围 workbook”活动拖放到新的"使用Excel文件"活动中。在“追加范围”活动中指定Excel文件路径(我们要在其中追加数据)。此外,指定数据表(由“读取范围”活动生成):
- 就这样。按F5键查看结果:
我们可以清楚地看到,数据已经成功地附加到Excel表中。
CSV/Excel到数据表,反之亦然(有一个循序渐进的例子)
在本节中,我们将了解如何将Excel文件中的数据提取到数据表中,反之亦然。我们将通过以下方式实现这一目标:
- 读取Excel文件并使用Excel文件中的数据创建数据表
- 创建数据表,然后将其所有数据写入Excel文件
读取Excel文件并使用Excel文件中的数据创建数据表
我们有一个现有的Excel文件,我们将在我们的项目中使用它:
- 将流程图活动拖放到设计器主窗口上。此外,在流程图中拖放Excel应用程序范围。
- 双击“使用Excel文件”。您必须指定工作簿/Excel文件的路径。从Excel应用程序范围内的“活动”面板中拖放“读取范围”活动。
“读取范围”活动将读取整个Excel工作表。我们还可以选择指定我们的范围。创建数据表类型的变量,并在“读取范围”活动的“输出”属性中指定该变量。此变量将接收“读取范围”活动生成的数据表:
- 将“输出数据表”活动拖放到Excel应用程序范围活动中。现在,我们必须指定输出数据表活动的两个属性:数据表属性和文本属性。“输出数据表”活动的“数据表”属性用于将数据表转换为字符串格式。
text属性用于以字符串格式提供其值。我们必须接收这个值才能使用它。为此,让我们创建一个字符串类型的变量。给它取一个有意义的名字:
- 将“消息框”活动拖放到Excel应用程序范围活动中。另外,指定我们之前在Messagebox活动中创建的字符串变量的名称。
- 就这样。按F5键查看结果。将弹出一个显示Excel文件数据的窗口。
创建数据表,然后将其所有数据写入Excel文件
在这个项目中,我们将动态构建一个数据表,然后将其所有数据写入Excel文件:
- 从Activities(活动)面板中拖放Build data table(构建数据表)活动。双击此活动。将弹出一个窗口。自动生成了两列;删除这两列。通过单击+图标并指定列名。您也可以选择自己喜欢的数据类型。您可以自由添加任意数量的列:
- 在这个项目中,我们将添加两列。添加第二列的过程几乎相同。您只需要指定一个名称及其首选数据类型。我们又添加了一列(Roll),并在数据表中将数据类型设置为Int32。我们还通过给数据表的行指定一些值来初始化该数据表。
- 创建数据表类型的变量。给它取一个有意义的名字。在“生成数据表”活动的“数据表”属性中指定此数据表的名称。我们必须提供这个变量才能获得我们构建的数据表:
我们的数据表已经成功构建。 - 在Designer主窗口中拖放使用Excel文件。指定Excel工作表的路径或手动选择它。将此活动连接到生成数据表活动
- 在使用Excel文件活动中,拖放“写入范围”活动。指定我们之前创建的数据表变量名称,并将其设置为Write Range活动中的data表属性。我们也可以指定范围。在这种情况下,我们将其指定为一个空字符串:
- 就是这样。点击Run按钮或按F5键查看结果。
总结
在本章中,您学习了将内存与变量一起使用的技术。您还了解了数据表以及在内存中操作数据的简单方法。
除了使用变量或集合存储数据外,我们还学会了使用CSV和Excel等文件以更持久的方式存储和操作数据。
在下一章中,我们将学习如何以更好的方式处理应用程序中的控件。
联系我: