首页 > 解决方案 > 方法没有签名:sample.Login.cellToString() 适用于参数类型:(org.apache.poi.xssf.usermodel.XSSFCell)

问题描述

我正在尝试使用自定义方法在第 0 行的 excel 标题名称与其索引之间进行映射

org.codehaus.groovy.runtime.InvokerInvocationException:groovy.lang.MissingMethodException:没有方法签名:sample.Login.cellToString() 适用于参数类型:(org.apache.poi.xssf.usermodel.XSSFCell) 值:[名]

这是我的代码

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 com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.checkpoint.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
import com.kms.katalon.core.testcase.TestCase
import com.kms.katalon.core.testdata.TestData
import com.kms.katalon.core.testdata.reader.ExcelFactory
import com.kms.katalon.core.testobject.ObjectRepository
import com.kms.katalon.core.testobject.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.webui.keyword.internal.WebUIAbstractKeyword

import org.apache.poi.hssf.usermodel.HSSFSheet
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.hssf.util.CellReference
import org.apache.poi.ss.usermodel.Cell
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.ss.usermodel.Workbook
import org.apache.poi.ss.util.CellUtil

import groovy.ui.SystemOutputInterceptor
import groovy.util.ObservableList.ElementAddedEvent

import java.text.DateFormat
import java.text.SimpleDateFormat

import javax.lang.model.element.Element

import org.apache.commons.io.comparator.PathFileComparator
import org.apache.commons.lang.exception.NestableRuntimeException
import org.openqa.selenium.WebElement
import internal.GlobalVariable
import java.awt.datatransfer.StringSelection
import java.awt.Robot
import java.awt.Toolkit
import java.awt.event.KeyEvent
import java.beans.Customizer

import com.kms.katalon.keyword.excel.ExcelKeywords

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.Map.Entry

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.json.JSONArray
import org.json.JSONObject

import java.lang.String
import com.kms.katalon.core.configuration.RunConfiguration
    @Keyword
    def mapping(String fileName,String sheetName){
        JSONObject jo = new JSONObject();
        JSONArray dataCollection = new JSONArray();
        JSONObject data = null;
        String pathToApp = RunConfiguration.getProjectDir() + ("\\files\\")+(fileName)
        FileInputStream file = new FileInputStream (new File(pathToApp))
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        XSSFSheet sheet = workbook.getSheet(sheetName);
        int rowNum = sheet.getLastRowNum() + 1; 
        int colNum = sheet.getRow(0).getLastCellNum();
        Row row = null;
        Cell cell = null;
            Map<String, Integer> colMapByName = new HashMap<String, Integer>();
            if (sheet.getRow(0).cellIterator().hasNext()) {
                for (int j = 0; j < colNum; j++) {
                    colMapByName.put(cellToString(sheet.getRow(0).getCell(j)), j);
                }
            }
            System.out.println(colMapByName);
            for (int i = 1; i < rowNum; i++) {
                row = sheet.getRow(i);
                data = new JSONObject();
                //colMap consists the column names and alias name for it
                for (Entry<String, String> colData : colMap.entrySet()) {
                    cell = row.getCell(colMapByName.get(colData.getValue()));//gives the index of column from  colMapByName Map by passing column name
                    data.put(colData.getKey(), cellToString(cell));//now the data passed to the alias for the column tobe used in application
                }
                dataCollection.put(data);
            }
            fileInputStream.close();
            file.delete();
            jo.put("tableData", dataCollection);
        return jo;

    }

怎么了 ?

标签: javaexcelgroovyapache-poi

解决方案


推荐阅读