我使用一个 xlsx 文件,其中包含DATE(year, month, day)
一个单元格中的公式。此单元格被格式化为日期,因此 Excel/OpenOffice 显示正确的日期。例如,单元格内容会'=DATE(2013;1;1)'
产生:'01.01.2013'
到目前为止 - 非常好。
使用 poi 库读取此文件时,我会:
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File("/home/detlef/temp/test.xlsx")));
XSSFSheet sheet = workbook.getSheet("Sheet A");
XSSFCell cell = sheet.getRow(0).getCell(0);
System.out.println(cell.getDateCellValue());
这将打印出:
Sun Dec 31 00:00:00 CET 1899
我正在使用 POI 3.9。
谁能告诉我为什么会这样?
找到了一种方法:
if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
CellValue evaluate = evaluator.evaluate(cell);
Date date = DateUtil.getJavaDate(evaluate.getNumberValue());
System.out.println(date);
}
这会产生:
Tue Jan 01 00:00:00 CET 2013
不管怎么说,还是要谢谢你。