在Microsoft Office Excel中,我將此公式設置在單元格中。 =YEAR("2017-01-01")
。結果是2017
。
在apache-poi中,我也這樣做。如何在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
過人之處[YEAR函數(https://support.office.com/en-us/article/YEAR- function-c64f017a-1354-490d-981f-578e8ec8d3b9)期望'Serial_number'作爲它的參數而不是'String'。也許Excel本身會很寬容,並在「Year」中使用之前將「2017-01-01」轉換爲日期序列號。但'apache poi'不會這樣做。所以'cell.setCellFormula(「YEAR(DATE(2017,1,1))」);'如Excels幫助文件中的'Year'所示。 –