You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何DataTable.GetRowCount返回行数远超有效数据行数?脚本读取空白行求助

为什么你的UFT DataTable.GetRowCount返回999而非实际的4行有效数据?

嘿,这个问题我之前碰到好多次了,结合你描述的情况,主要有这几个可能的原因:

  • Excel的「已使用区域」被意外扩展了
    你导入的Excel文件里,虽然只有4行有效数据,但第5到999行可能曾经被编辑过——比如输入过内容又删掉,或者设置过单元格格式(比如改个字体颜色)。Excel会把这些行标记为「已使用区域」(UsedRange),UFT的DataTable是基于这个区域来统计行数的,所以就会把这些空行也算进去,导致GetRowCount返回999。

  • UFT DataTable的默认空白行没被覆盖
    当你新建DataTable工作表时,UFT默认会生成一批空白行(早期版本通常是1000行左右)。如果你导入数据时只覆盖了前4行,剩下的默认空白行依然会被统计,所以总数就变成了999(可能刚好是默认行数减1)。

  • 导入时没限定有效数据区域
    如果你是直接导入整个Excel工作表,而不是指定只导入A1:D4这类有效区域,UFT会把Excel里所有被标记为已使用的行(包括空的)都加载进来,自然行数就不对了。


对应的解决办法也很简单:
  1. 先清理Excel的已使用区域
    打开原Excel文件,选中第5行到最后一行,右键选择「删除整行」,然后保存文件。再重新导入到UFT里,此时GetRowCount应该就能返回正确的4行了。

  2. 导入时指定精确的数据区域
    在UFT导入Excel数据的步骤里,别选整个工作表,而是手动指定有效数据的范围(比如Sheet1!A1:D4),这样只会加载你需要的行。

  3. 脚本里加空行判断逻辑
    要是没法修改原Excel文件,就在脚本里遍历行的时候,检查关键列是否为空,遇到空行就停止迭代。比如写个VBScript代码片段:

    Dim currentRow, totalRows
    totalRows = DataTable.GetSheet(3).GetRowCount
    For currentRow = 1 To totalRows
        ' 假设第一列是关键列,判断是否为空
        If DataTable.Value(1, 3) = "" Then
            Exit For
        End If
        ' 这里放你的业务处理代码
    Next
    

内容的提问来源于stack exchange,提问作者Mrigaja Shelke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:12:24