无法从文本单元格获取数字值
我正试图从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为数字。