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

使用Groovy脚本在SoapUI中读取XLS文件——RowSelector取值问题

解决Groovy中使用JXL读取XLS文件无法获取值的问题

你的代码里藏着一个关键的小问题:从测试套件属性获取的RowSelector是字符串类型,但JXL的getCell(int column, int row)方法要求行参数必须是整数类型,直接传字符串会导致方法调用失败,自然拿不到单元格的值。

下面是修正后的完整代码,我还加了些实用的细节处理:

import jxl.* 
import jxl.write.* 

def value1, value2, value3 
// 从测试套件属性中提取行选择器字符串
def rowSelectorStr = testRunner.testCase.testSuite.getPropertyValue("RowSelector") 

// 先校验并转换为整数类型的行索引
def rowIndex
if (rowSelectorStr?.isInteger()) {
    rowIndex = rowSelectorStr.toInteger()
    // 注意:JXL的行索引从0开始,如果你的RowSelector是Excel的行号(从1开始),要减1
    // rowIndex = rowSelectorStr.toInteger() - 1
} else {
    log.error("RowSelector不是有效的整数格式,请检查测试套件属性配置: ${rowSelectorStr}")
    return
}

// 读取Excel工作簿
def wb = Workbook.getWorkbook(new File("C:\\groovy\\excel-file.xls")) 
log.info("当前选中的行索引: ${rowIndex}") 

// 正确获取A列对应行的值
value1 = wb.getSheet(0).getCell(0, rowIndex).getContents() 
log.info("成功获取到的值: ${value1}")

// 务必关闭工作簿,释放文件资源
wb.close()

额外提醒几个需要注意的细节:

  • 变量定义用逗号分隔更规范:def value1, value2, value3,不用分开写三个def
  • 增加了空值和格式校验,避免因RowSelector为空或非整数导致程序崩溃
  • 操作完工作簿后一定要调用wb.close(),防止文件被锁定无法修改或删除
  • 如果你的RowSelector对应的是Excel里的直观行号(比如输入1对应A1单元格),记得打开代码里的注释,将行索引减1——因为JXL的索引是从0开始计数的。

内容的提问来源于stack exchange,提问作者Marina Moraes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:30:15