如何评估这个公式在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); }