首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何LowerCase从Excel创建的列表

如何LowerCase从Excel创建的列表
EN

Stack Overflow用户
提问于 2022-10-10 02:00:21
回答 1查看 35关注 0票数 0

我被困在这上面好几天了。我不明白这失败的原因。我正在使用Katalon,我试图使用Groovy作为主要语言,但是对于某些函数,我使用Java。

我要做的是,首先读取Excel文件,从列中获取值,然后将其存储在Strings列表中,最后,我希望将该列表小写。

从excel获取列表的

  • 运行良好。
  • 将列表更改为小写很好。
  • 但出于某种原因,toLowerCase()拒绝处理我从excel文件中获得的列表。在任何其他列表中,它都可以正常工作。

这是主要脚本(测试用例)

代码语言:javascript
复制
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.Keys as Keys
import static java.util.stream.Collectors.*
import java.lang.String as String

List<String> lst_ListFromExcel = new ArrayList()

//this works fine
lst_ListFromExcel = CustomKeywords.'com.utils.ExcelFiles.getCellValuesList'(xlFilePath, 0, 3)

//list printed correctly
WebUI.comment("lst_ListFromExcel = $lst_ListFromExcel")

//Copying list I got from excel to a new one. The first time it worked
List<String> resultsList = new ArrayList<String>(lst_ListFromExcel)

WebUI.comment("resultsList = $resultsList")

//Here is where I got the error. However, with any other list it works fine.
resultsList = resultsList.collect{it.toLowerCase()}

WebUI.comment("resultsList = $resultsList")

这是我为获取列的值并将它们存储在字符串列表中而创建的自定义关键字:

代码语言:javascript
复制
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DateFormat
import java.text.SimpleDateFormat
import org.apache.poi.ss.usermodel.Cell
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.ss.usermodel.Sheet
import org.apache.poi.ss.usermodel.Workbook
import org.apache.poi.ss.usermodel.WorkbookFactory
import org.apache.poi.xssf.usermodel.XSSFWorkbook

    // xlFilePath in this format C:\folder\folder\file.xlsx
    @Keyword
    def getCellValuesList(String xlFilePath, int sheetIndex, int columnIndex) {
        List<String> rsltValuesList = new ArrayList<>()
        def count = 0
        int column_index_1 = 0;
        File file = new File(xlFilePath);
        Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
        Sheet sheet = workbook.getSheetAt(sheetIndex);
        column_index_1 = columnIndex
        Row row = sheet.getRow(0);
        for (Row r: sheet) {
            if (r.getRowNum() == 0) continue; //hearders
            Cell c_1 = r.getCell(column_index_1);
            if (c_1 != null && c_1.getCellType() != Cell.CELL_TYPE_BLANK) {
                System.out.print("  " + c_1 + "\n");
                rsltValuesList.add(c_1)
                count++
            }
        }
        WebUI.comment("Values count = $count")
        WebUI.comment("rsltValuesList = $rsltValuesList")
        return rsltValuesList
    }

最后,我得到的错误是这个。我只有在使用从excel文件中获得的列表时才会收到此错误。在任何其他列表中,这都很好。

代码语言:javascript
复制
10-09-2022 08:33:27 PM resultsList = resultsList.collect({ -> ... })

Elapsed time: 0.058s

Test Cases/Temp/Temp-ToLowerCase FAILED.
Reason:
groovy.lang.MissingMethodException: No signature of method: org.apache.poi.xssf.usermodel.XSSFCell.toLowerCase() is applicable for argument types: () values: []
    at Script1665186880146$_run_closure1.doCall(Script1665186880146.groovy:32)

我不使用org.apache.poi.xssf.usermodel.XSSFCell,正如我说过的,这只发生在我从Excel获得的列表中,即lst_ListFromExcelresultsList

我很感谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-10 05:29:17

添加toString()应该会有所帮助

代码语言:javascript
复制
resultsList.collect{it.toString().toLowerCase()}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74009614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档