如何通过UiPath读取Excel工作表并将单元格值放在不同的文本字段中?

时间:2019-02-15 11:46:47

标签: uipath

如何通过UiPath读取Excel工作表并将单元格值放在不同的文本字段中?

我有一个如下的excel工作表:

SAP_excel

我已经阅读了excel的内容,并在以后对这些内容进行迭代,我将这些内容存储在Output Data Table中,如下所示:

  • 读取范围-输出:

    • 数据表:CVdatatable
  • 输出数据表

    • 数据表:CVdatatable
    • 文本:opCVdatatable

屏幕截图:

SAP_OutputDataTable

最后,我想迭代读取text opCVdatatable 并将其写入文本字段。因此,在所需的 Input 字段中,我根据需要提到了opCVdatatableopCVdatatable+ "[k(enter)]"

屏幕截图:

SAP_iterate_OutputDataTable

但是,每当我要求opCVdatatable时,UiPath似乎都是从输出数据表的开头开始的。

简而言之,所有想要的 Input 文件都将迭代存储在 Output Data Table 中的所有数据中。

有人可以帮我吗?

2 个答案:

答案 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修改为包括选择器的一部分:

enter image description here

请注意,B列现在包含一个标识符,并且此ID取决于您将使用的应用程序。例如,这是我的示例应用程序的样子。如您所见,第一个文本框的ID为585,第二个文本框的ID为586,依此类推(请注意,如果暴露给UiPath,则可以使用任何类型的标识符,包括控件的名称):

uiexplorer

现在,您无需添加多个Type Into元素到您的工作流中,只需添加一个元素,就可以遍历数据表的每一行,然后创建一个动态选择器:

workflow

对于我来说,Type Into活动的选择器如下所示:

"<wnd cls='#32770' title='General' /><wnd ctrlid='" + row(1).ToString() + "' />"

这将使您可以仅通过Excel工作表维护该过程-如果需要映射新字段,只需将其添加到工作表即可。无需更改工作流程。