【发布时间】:2017-12-13 08:56:26
【问题描述】:
Apache POI:Excel 更新问题, 将新值写入单元格后: java.lang.IllegalStateException:无法从 STRING 单元格中获取 NUMERIC 值
可能是什么问题?如何解决?
我使用 5 个文件,其中 3 个可以正常工作,另外 2 个不能。 2个坏文件的解决方法: Runtime.getRuntime().exec("cmd /c start" + excel.getAbsolutePath());
// ---------------------------------------------------------------------------
// Here: new values are written into the cells
workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
workbook.setForceFormulaRecalculation(true);
OutputStream output = new FileOutputStream(excel.getAbsolutePath());
workbook.write(output);
output.flush();
output.close();
// Here, new values are subtracted from the cells,
after Excel resolves with new values
// ---------------------------------------------------------------------------
// Value in bad Cell: =B24
java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell
at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:1050)
at org.apache.poi.xssf.usermodel.XSSFCell.getNumericCellValue(XSSFCell.java:310)
at quicc.excel.api.ExcelHandlerXSSF.handleCell(ExcelHandlerXSSF.java:275)
at quicc.excel.api.ExcelHandlerXSSF.readCell(ExcelHandlerXSSF.java:251)
【问题讨论】:
-
错误很明显。
ExcelHandlerXSSF.java的第 275 行中的代码使用XSSFCell.getNumericCellValue,但单元格不包含数字,而是包含字符串。所以看看你的ExcelHandlerXSSF.java。
标签: java apache apache-poi