[英]CELL_TYPE_STRING cannot be resolved or is not a field
堆栈跟踪
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
CELL_TYPE_STRING cannot be resolved or is not a field
CELL_TYPE_NUMERIC cannot be resolved or is not a field
CELL_TYPE_BOOLEAN cannot be resolved or is not a field
at len.a.main(a.java:30)
代码
package len;
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.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class a {
public static void main(String[] args) throws Exception{
ArrayList data =new ArrayList();
FileInputStream f =new FileInputStream("E:\\leadsuite.xlsx");
XSSFWorkbook wb=new XSSFWorkbook(f);
Sheet s=wb.getSheet("test steps");
Iterator itr=s.iterator();
while(itr.hasNext())
{
Row r=(Row) itr.next();
Iterator cellitr=r.cellIterator();
while(cellitr.hasNext())
{
Cell celldata=(Cell) cellitr.next();
switch(celldata.getCellType())
{
case Cell.CELL_TYPE_STRING:
data.add(celldata.getStringCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
data.add(celldata.getNumericCellValue());
break;
case Cell.CELL_TYPE_BOOLEAN:
data.add(celldata.getBooleanCellValue());
break;
}
}
}
}
}
enum
是STRING
、 NUMERIC
和BOOLEAN
,删除CELL_TYPE_
,它们是CellType 枚举的一部分
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;
}
如果您使用更高版本的 Apache POI poi-4.0.1 ,则Cell.getCellType()
返回 CellType 枚举而不是 int,因此您的开关应如下所示:
现在在CELL_TYPE_NUMERIC
现在只是NUMERIC
删除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;
}
试试这个代码。 它有效...您只需要知道 poi api 版本并遵循 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));
}
}
}
}
像这样使用 switch-case
switch (cell.getCellType()) {
case STRING:
System.out.print(cell.getStringCellValue() + "\t\t\t");
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t\t\t");
break;
default:
}
JDK 15
switch (cell.getCellType()) {
case NUMERIC -> data.add(cell.getNumericCellValue());
case STRING -> data.add(cell.getStringCellValue());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.