簡體   English   中英

如何在Apache Poi中正確評估此公式?

[英]How to evaluate this formula right in 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

來自Interface FormulaEvaluator docs

如果單元格包含公式,它將評估公式,並將公式結果放回單元格中,以代替舊公式。 否則,如果單元格不包含公式,則此方法將使單元格保持不變。 請注意,返回了相同的Cell實例以允許鏈接調用,例如:

 int evaluatedCellType = evaluator.evaluateInCell(cell).getCellType(); 
if (cell.getCellType() == Cell.CELL_TYPE_FORMULA)
{
     cell = evaluator.evaluateInCell(cell);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM