DATE(year, month, day)
セル内に数式を含む xlsx ファイルを使用しています。このセルは日付としてフォーマットされているため、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
とにかくありがとう。