第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Java POI:如何读取Excel单元格值而不是计算公式

Java POI:如何读取Excel单元格值而不是计算公式

时间:2021-02-15 05:01:53

相关推荐

Java POI:如何读取Excel单元格值而不是计算公式

我正在使用Apache POI API从Excel文件中获取值.

除了含有公式的单元格外,一切都很好.实际上,cell.getStringCellValue()返回单元格中使用的公式而不是单元格的值.

我尝试使用evaluateFormulaCell()方法,但它不起作用,因为我使用的是GETPIVOTDATA Excel公式,并且此公式未在API中实现:

CopyException in thread "main" org.apache.poi.ss.formula.eval.NotImplementedException: Error evaluating cell Landscape!K11at org.apache.poi.ss.formula.WorkbookEvaluator.addExceptionInfo(WorkbookEvaluator.java:321)at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:288)at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:221)at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCellValue(HSSFFormulaEvaluator.java:320)at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCell(HSSFFormulaEvaluator.java:213)at fromExcelToJava.ExcelSheetReader.unAutreTest(ExcelSheetReader.java:193)at fromExcelToJava.ExcelSheetReader.main(ExcelSheetReader.java:224)Caused by: org.apache.poi.ss.formula.eval.NotImplementedException: GETPIVOTDATAat org.apache.poi.hssf.record.formula.functions.NotImplementedFunction.evaluate(NotImplementedFunction.java:42)

最佳答案

对于公式单元格,excel存储两件事.一个是公式本身,另一个是“缓存”值(论坛被评估为的最后一个值)

如果你想获得最后一个缓存的值(可能不再正确,但只要Excel保存文件并且你没有更改它应该是),你会想要类似的东西:

Copy for(Cell cell : row) {if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) {System.out.println("Formula is " + cell.getCellFormula());switch(cell.getCachedFormulaResultType()) {case Cell.CELL_TYPE_NUMERIC:System.out.println("Last evaluated as: " + cell.getNumericCellValue());break;case Cell.CELL_TYPE_STRING:System.out.println("Last evaluated as \"" + cell.getRichStringCellValue() + "\"");break;}}}

转自:/p/1173850.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。