uipath "for each" 很耗时

uipath "for each" being time-consuming

我在我的 UIPath 项目中实现了一个正常的 'for each'-循环(不是每一行特定的 excel)。

for-each 循环使用先前从 excel 文件中检索到的数据查看数据表。

for-each-loop 然后循环遍历数据,后面有 if-else。

假设如下:

for each item in dataTable:

if (content of item == "10")
{
write cell: "Test" into A + index.ToString() 
// leads for instance to writing into excel column 'A1' 
}

else 
{ write cell: "ElseTest" into for C + index.ToString() }

-- 我使用 语法只是为了演示目的 .. :D

-> 所以问题是: 写入单元格需要很多时间,否则在 if 和 elses 中放置带有 运行dom 文本的 MessageBox以毫秒为单位,因此 for-each 循环不是问题...

我运行打开任务管理器的那个进程,发现Excel启动了,CPU百分比大幅增加,马上跳到0%...同样的情况又发生了,对于循环中的每次迭代。

这是为什么? 有没有更优化的方法来做到这一点?

我需要 for-each 结构,因为我需要检查它在单元格内是值 1 还是值 2...

我认为每次迭代打开 excel 是耗时的部分,所以我建议

  1. 在每个
  2. 之前打开 excel
  3. 在 foreach 中使用附加 window activity (https://activities.uipath.com/docs/window-scope) 将焦点设置在 excel 文件
  4. 在 foreach 之后或完成 excel 文件后关闭 excel

如果您不使用 reframework (https://github.com/UiPath/ReFrameWork/tree/master/Framework),我强烈建议您使用它。这是 RPA 项目的 excel 贷款起点。

如果您正在使用重构,您可以在 InitAllApplications.xaml 中打开 excel 文件,在 Process.xaml 中执行操作并在 CloseAllApplications.xaml 中关闭 excel。

一个可能的选择是使用 Read Range activity,操纵 DataTable 对象本身,然后在最后使用 Write Range activity.

举个例子。我的 sheet 包含 100 行,A 列中的所有数字都是从 1 到 100。只要单元格中有“1”,数据就会被覆盖(在 DataTable 对象中)。