excel - 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 文件中时 - 我想用不同的颜色为特定范围着色,因此我需要每个范围的特定长度,否则我也会得到空行的颜色..
问候,弗兰兹
解决方案
有几种方法可以实现这一点:
天真的方法
一个非常简单的方法是读取一个足够大的范围 - 例如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活动中使用它。
推荐阅读
- sql - 用于计算特定年份 >2 个订单的 SQL 查询
- bash - 在 bash 管道中,将上一个命令的输出作为下一个命令的变量(例如 if 语句)
- java - 如何使用while循环循环遍历哈希图中的每个项目
- c# - 您可以像在 Javascript 中一样在 C# 中创建对象列表吗?
- json - 创建具有特定文本格式的 pd.DataFrame
- python - 如何使用熊猫中的for循环根据另一列的条件填写一列中的缺失值?
- r - 使用 R 计算镜头图的每个 bin 中的平均点
- acumatica - 使用 Javascript 与隐藏字段和操作交互
- c - 为什么将 free 的返回值转换为 void?
- qt - CMake 抱怨找不到 autouic 文件