如何通过UiPath读取Excel工作表并将单元格值放在不同的文本字段中?
我有一个如下的excel工作表:
我已经阅读了excel的内容,并在以后对这些内容进行迭代,我将这些内容存储在Output Data Table
中,如下所示:
读取范围-输出:
输出数据表
屏幕截图:
最后,我想迭代读取text
opCVdatatable 并将其写入文本字段。因此,在所需的 Input 字段中,我根据需要提到了opCVdatatable
或opCVdatatable+ "[k(enter)]"
。
屏幕截图:
但是,每当我要求opCVdatatable
时,UiPath似乎都是从输出数据表的开头开始的。
简而言之,所有想要的 Input 文件都将迭代存储在 Output Data Table 中的所有数据中。
有人可以帮我吗?
答案 0 :(得分:2)
我的第一个建议是使用if (myFunction instanceof Function1) // Not working.
if ('property' in myFunction) // ...?
从Excel读取数据,因为它更快,在后台运行并且不需要在系统上安装excel。
像这样开始序列(注意,未选中添加标头属性):
您不需要使用Workbook: Read range activity
,因为此活动将输出包含所有行项目的字符串。相反,您要做的是访问数据表中的项目,并将每个项目作为字符串输出到Output Data Table
中,例如type into
,如下所示:
您提到要在 迭代 中阅读文本CVDatatable.Rows(0).Item(0).ToString
,并将其写入文本字段。这有点复杂,但我举一个例子。您可以使用opCVdatatable
活动并在For Each Row
中的每一行中循环,并根据需要设置CVDatatable
属性。参见下文:
面临的挑战是在此处使选择器正确并使其动态化,以便每次迭代针对不同的文本字段。 index
活动的选择器将取决于您要定位的系统,但这是一个示例:
以及选择器:
此外,这是一个有效的XAML文件供您测试。
希望这会有所帮助。
克里斯
答案 1 :(得分:2)
这是另一种更通用的方法。而不是将目标包括在流程本身中,而是将Excel修改为包括选择器的一部分:
请注意,B列现在包含一个标识符,并且此ID取决于您将使用的应用程序。例如,这是我的示例应用程序的样子。如您所见,第一个文本框的ID为585,第二个文本框的ID为586,依此类推(请注意,如果暴露给UiPath,则可以使用任何类型的标识符,包括控件的名称):
现在,您无需添加多个Type Into
元素到您的工作流中,只需添加一个元素,就可以遍历数据表的每一行,然后创建一个动态选择器:
对于我来说,Type Into
活动的选择器如下所示:
"<wnd cls='#32770' title='General' /><wnd ctrlid='" + row(1).ToString() + "' />"
这将使您可以仅通过Excel工作表维护该过程-如果需要映射新字段,只需将其添加到工作表即可。无需更改工作流程。