我有一个显示Excel工作表内容的Java代码。现在,当我使用 numeric / string / boolean 数据时,它总是给我正确的结果。与测试我的代码不同,我在Excel中进行了一些更改,并添加了日期值,例如 4-sep-09 。在运行我的代码时,它返回了不需要的结果。代码和o / p如下所示。 如何从Excel工作表中读取和显示日期值?我正在使用Apache Poi。我可以做XSSFDateUtil
这样的事情并使用if-else
检查单元格值是否为日期?这是一个可能的解决方案?
Java代码:
FileInputStream file = new FileInputStream(new File(FileName));
System.out.println("The contents of sheet are:\n");
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println("");
}
file.close();
O / P我正在
ColA | ColB....(few other columns)
32755.0|(other values)
相反,我想要的日期值必须打印而不是数字。我的工作表在 ColA 下有 4-SEP-89 日期,它显示了一些数字。
期望的O / P
ColA | ColB....(few other columns)
4-SEP-89|(other values)
注意: - 这是我的代码的一部分,运行正常。它没有给出任何错误,但是如上所述,我需要对o / p进行微小的改动。我已经在这方面工作了一段时间。我在此之前询问了有关显示excel表的问题 - Issue while reading Excel document (Java code),这些问题与其他几个表一起解决。不管怎样,谢谢。
另外,据我所知,excel中的所有内容都被读取为String(布尔值除外)?不是吗?
答案 0 :(得分:4)
您可能需要查看DateUtil.isCellDateFormatted()
DateUtil是一个实用工具类,可帮助您处理Excel日期。它还有一些方法可以从double
Cell
来获取Java日期