UIPath - 遍历 excel 文件以填充具有读取范围 "dynamically" 的 DataTable

UIPath - Iterating through excel file to fill in DataTable with Read Range "dynamically"

我的问题原则上与的目标相同 (在读取 Excel 文件的意义上,ReadRange 遍历它)

我想遍历 excel 文件 - 当然会使用 Excel 应用程序范围来执行此操作.. 但是当我将 Excel 文件读入数据表时 - 我需要给它一个像 "D2:K30"..

这样的范围

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

使用 VBA 我会遍历 excel 文件并说出类似

的内容

'if row content is ""'

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

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

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

所以我的目标是在不将空行复制到数据表的意义上使这个读取范围 'dynamically'..

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

此致,弗兰茨

有几种方法可以实现:

天真的方法

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

调用VBA

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

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)。

合并获取 Table 和获取范围

这可能是我最喜欢的一个,因为您可以简单地使用工作簿活动(即无需安装 Excel)。但是,它要求您将数据保存在 Excel represented as a table. Here's an example - the Get Table Range activity returns a range (as string, e.g. "A1:C42" which is then used in the Read Range activity.