CELL_TYPE_STRING cannot be resolved or is not a field

后端 未结 3 477
梦谈多话
梦谈多话 2021-02-04 15:05

Stack trace

Exception in thread \"main\" java.lang.Error: Unresolved compilation problems: 
CELL_TYPE_STRING cannot be resolved or is not a field
CELL_TYPE_N         


        
相关标签:
3条回答
  • 2021-02-04 15:11

    If you're using a later version of Apache POI poi-4.0.1, Cell.getCellType() returns the CellType enum instead of int, so your switch should look like this:

    now in CELL_TYPE_NUMERIC is now just NUMERIC remove CELL_TYPE_

      while(cellitr.hasNext())
                    {
                        Cell celldata=(Cell) cellitr.next();
                        switch(celldata.getCellType())
                        {
                        case STRING:
                            data.add(celldata.getStringCellValue());
                            break;
                        case NUMERIC:
                            data.add(celldata.getNumericCellValue());
                            break;
                        case BOOLEAN:
                            data.add(celldata.getBooleanCellValue());
                            break;
                        }
    
    0 讨论(0)
  • 2021-02-04 15:14

    Try this Code. It works... You just need to know poi api version and follow the new changes in poi api.

    import java.io.FileInputStream;
    import java.util.ArrayList;
    import java.util.Iterator;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    
    public class A {
    
        public static void main(String[] args) throws Exception{
    
            ArrayList data = new ArrayList();
    
            FileInputStream file = new FileInputStream("F://LeadSuite.xlsx");
            XSSFWorkbook book = new XSSFWorkbook(file);
            XSSFSheet s = book.getSheet("TestSteps");
    
        Iterator itr = s.iterator();
        while (itr.hasNext()) {
            Row rowitr = (Row) itr.next();
            Iterator cellitr = rowitr.cellIterator();
            while(cellitr.hasNext()) {
                Cell celldata = (Cell) cellitr.next();
    
                switch(celldata.getCellType()) {
                case STRING:
                    data.add(celldata.getStringCellValue());
                    break;
                case NUMERIC:
                    data.add(celldata.getNumericCellValue());
                    break;
                case BOOLEAN:
                    data.add(celldata.getBooleanCellValue());
                    break;
                }
            }
        }
    
        for (int i=0;i<data.size();i++) {
            if(data.get(i).equals("Sharan")) {
                System.out.println(data.get(i));
                System.out.println(data.get(i+1));
                System.out.println(data.get(i+2));
                System.out.println(data.get(i+3));          
            }
            if(data.get(i).equals("Kiran")) {
                System.out.println(data.get(i));
                System.out.println(data.get(i+1));
                System.out.println(data.get(i+2));
                System.out.println(data.get(i+3));
            }
            if(data.get(i).equals("Jhade")) {
                System.out.println(data.get(i));
                System.out.println(data.get(i+1));
                System.out.println(data.get(i+2));
                System.out.println(data.get(i+3));
    }
    }       
    }
    }
    
    0 讨论(0)
  • 2021-02-04 15:31

    The enums are STRING, NUMERIC and BOOLEAN, drop the CELL_TYPE_, and they are part of CellType enum

    switch(celldata.getCellType()) {
        case CellType.STRING:
            data.add(celldata.getStringCellValue());
            break;
        case CellType.NUMERIC:
            data.add(celldata.getNumericCellValue());
            break;
        case CellType.BOOLEAN:
            data.add(celldata.getBooleanCellValue());
            break;
    }
    
    0 讨论(0)
提交回复
热议问题