在Apache POI 3.15中读取公式单元格的结果

时间:2016-11-23 14:39:22

标签: scala apache-poi

我尝试将单元格中的值作为字符串读取(就像在Excel中看到的那样)。我使用Apache POI 3.15从xlsx(XSSFWorkbook)读取。

我的目标是如果单元格包含整数,则省略小数点和尾随零。这适用于CellType.NUMERIC

val dataFormatter = new DataFormatter(true) // set emulateCsv to true
val stringValue = dataFormatter.formatCellValue(cell)

如果我对CellType.FORMULA单元使用相同的代码(例如,引用另一个&#34;整数&#34;单元格的单元格),它只是将公式作为字符串而不是其计算值。< / p>

如何获得Excel显示中显示的公式单元格的值?

1 个答案:

答案 0 :(得分:0)

你需要&#34;评估&#34;单元格以获得公式的结果。这不是由POI自动完成的,因为它可能是繁重的操作,通常是没有必要的。

有关详细信息,请参阅http://poi.apache.org/spreadsheet/eval.html,基本上您为相关单元格创建FormulaEvaluator并检索CellValue

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
...
CellValue cellValue = evaluator.evaluate(cell);