使用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
相关产品推荐
相关产品推荐

