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 是耗时的部分,所以我建议
- 在每个
之前打开 excel
- 在 foreach 中使用附加 window activity (https://activities.uipath.com/docs/window-scope) 将焦点设置在 excel 文件
- 在 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
对象中)。
我在我的 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 是耗时的部分,所以我建议
- 在每个 之前打开 excel
- 在 foreach 中使用附加 window activity (https://activities.uipath.com/docs/window-scope) 将焦点设置在 excel 文件
- 在 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
对象中)。