如何评估这个公式在Apache的poi?
在Microsoft Office Excel中,我将此公式设置在单元格中。 =YEAR("2017-01-01")
。结果是2017
。
在apache-poi中,我也是这样做的。
cell.setCellFormula("YEAR(\"2017-01-01\")");
但是我得到一个错误的结果。
#VALUE!
如何得到正确的结果?
码
HSSFWorkbook hssfworkbook = new HSSFWorkbook(); HSSFSheet sheet = hssfworkbook.createSheet("Sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); cell.setCellFormula("YEAR(\"2017-01-01\")"); CreationHelper creationHelper = hssfworkbook.getCreationHelper(); FormulaEvaluator evaluator = creationHelper.createFormulaEvaluator(); System.out.println(evaluator.evaluate(cell));
安慰
org.apache.poi.ss.usermodel.CellValue [#VALUE!]
使用apache-poi 3.16
从接口FormulaEvaluator文档
如果单元格包含公式,则对公式进行评估,并将公式结果放回到单元格中,而不是旧公式。 否则,如果细胞不含有配方,这种方法离开细胞不变。 请注意,Cell的相同实例将被返回以允许链接调用,如:
int evaluatedCellType = evaluator.evaluateInCell(cell).getCellType();
if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { cell = evaluator.evaluateInCell(cell); }