无法从文本单元格获取数字值

我正试图从Excel导入数据到MySQL。

java.util.ArrayList; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import moduleobject.Summary; public class SummaryReader implements SheetReader<ArrayList<Summary>> { public ArrayList<Summary> read(Sheet sheet) { Iterator<Row> rowiterator = sheet.iterator(); rowiterator.next(); ArrayList<Summary> list = new ArrayList<>(); Summary obj = new Summary(); while (rowiterator.hasNext()) { Row nextRow = rowiterator.next(); Iterator<Cell> celliterator = nextRow.cellIterator(); while (celliterator.hasNext()) { obj.setProcessor(celliterator.next().getStringCellValue()); obj.setProcessName(celliterator.next().getStringCellValue()); obj.setLevel(celliterator.next().getNumericCellValue()); obj.setPA11(celliterator.next().getNumericCellValue()); obj.setPA21(celliterator.next().getNumericCellValue()); obj.setPA22(celliterator.next().getNumericCellValue()); // obj.setPA31(celliterator.next().getNumericCellValue()); // obj.setPA32(celliterator.next().getNumericCellValue()); } } list.add(obj); return list; } } 

我得到的错误是

 Exception in thread "main" java.lang.IllegalStateException: Cannot get a numeric value from a text cell at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:994) at org.apache.poi.xssf.usermodel.XSSFCell.getNumericCellValue(XSSFCell.java:305) at reader.SummaryReader.read(SummaryReader.java:32) at reader.SummaryReader.read(SummaryReader.java:1) at controller.JobController.startJob(JobController.java:69) at job.JobLauncher.main(JobLauncher.java:21) 

为什么我得到这个exception?

请用:

 DataFormatter formatter = new DataFormatter(); Cell cell = sheet.getRow(i).getCell(0); String var_name = formatter.formatCellValue(cell); 

也许,其中一种方式是可以将单元格types设置为

 celliterator.next().setCellType(CELL_TYPE_STRING); 

然后读取单元格值并将单元格值读取为string。然后可以根据需要将string值parsing为数字。