首页 > 解决方案 > UIPath - 遍历 excel 文件以“动态”填充具有读取范围的 DataTable

问题描述

我的问题原则上与使用 UiPath 从 Excel 文件中循环 URL的目标相同 (在使用 ReadRange 读取 Excel 文件并迭代它的意义上)

我想遍历 excel 文件 - 当然会使用 Excel 应用程序范围来执行此操作。但是当我将 Excel 文件读入 DataTable 时 - 我需要给它一个像“D2:K30”这样的范围。

“K30”将是我读入范围的结尾 - 那么我如何设法获得我的特定 excel 文件的“结尾”?

使用 VBA,我只需遍历 excel 文件并说出类似

'如果行内容是“”'

,然后我会知道第一个 EMPTY 行何时出现。

也许我第一个找到的空行将保存在变量“emptyRow”中 - 然后我可以说

读取范围 "D2:K" + emptyRow - 1

所以我的目标是在不将空行复制到数据表中的意义上使这个读取范围“动态”。

因为此外 - 当我将该数据表复制到另一个 excel 文件中时 - 我想用不同的颜色为特定范围着色,因此我需要每个范围的特定长度,否则我也会得到空行的颜色..

问候,弗兰兹

标签: exceluipath

解决方案


有几种方法可以实现这一点:

天真的方法

一个非常简单的方法是读取一个足够大的范围 - 例如A1:C10000,然后在所述范围上循环以找到第一个空单元格 - 此时您将退出循环。有一个明显的缺点 - 这根本不是很有效。

调用 VBA

另一种选择是使用Invoke VBA活动,然后使用如下内容:

Function GetRowCount()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Sheet1")
    Dim k As Long
    k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
    GetRowCount = k
End function

这应该可以正常工作,但它需要您使用 Excel 范围(这需要您安装 Excel)。

结合获取表格和获取范围

这可能是我最喜欢的一个,因为您可以简单地使用 Workbook 活动(即无需安装 Excel)。但是,它要求您将 Excel 中的数据表示为表格。这是一个示例 - Get Table Range活动返回一个范围(作为字符串,例如“A1:C42”,然后在Read Range活动中使用它。

获取表格范围


推荐阅读