从Excel工作表读取日期值(Java)

从Excel工作表读取日期值(Java),java,apache-poi,Java,Apache Poi,我有一个显示excel工作表内容的Java代码。现在,当我处理数字/字符串/布尔数据时,它总是给我正确的结果。与之不同的是,为了测试我的代码,我在Excel中做了一些更改,并添加了一个日期值,例如2009年9月4日。在运行我的代码时,它返回了不想要的结果。代码和o/p如下所示如何从excel工作表中读取和显示日期值?我正在使用Apache Poi。我可以做一些类似于XSSFDateUtil的事情,检查单元格值是否为date,或者是否使用if-else?这是一个可能的解决方案吗 Java代码: F

我有一个显示excel工作表内容的Java代码。现在,当我处理数字/字符串/布尔数据时,它总是给我正确的结果。与之不同的是,为了测试我的代码,我在Excel中做了一些更改,并添加了一个日期值,例如2009年9月4日。在运行我的代码时,它返回了不想要的结果。代码和o/p如下所示如何从excel工作表中读取和显示日期值?我正在使用Apache Poi。我可以做一些类似于
XSSFDateUtil
的事情,检查单元格值是否为date,或者是否使用
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();
相反,必须打印日期值,而不是数字。我的工作表上有1989年9月4日的可乐日期,上面显示了一些数字

所需O/p

ColA    | ColB....(few other columns)
4-SEP-89|(other values)
注意:-这是我代码的一部分,运行良好。它没有给出任何错误,但是我需要按照上面的要求对o/p进行小的更改。我已经为此工作了一段时间。在此之前,我提出了一些与显示excel表格相关的问题,这些问题与其他几个问题一起得到了解决。无论如何,谢谢你

另外,据我所知,excel中的所有内容都被读取为字符串(布尔值除外)?是吗?

你可能想看看

DateUtil是一个帮助您处理excel日期的实用程序类。它还有一些方法可以从您可能想查看的
单元格中的
double
中获取Java日期


DateUtil是一个帮助您处理excel日期的实用程序类。它还提供了从
单元格中获得的
双精度
中获取Java日期的方法

我的文件在Excel 2007中,因此我使用XSSF而不是HSSF,并且无法找到XSSFDATEUTILTE。它们是UtilDate上的静态方法,因此也可以在HSSFUtilDate(UtilDate的子类)上访问。我的文件在Excel 2007中,所以我使用XSSF而不是HSSF,在UtilDate上找不到XSSFDateUtilDate它们是静态方法,所以也可以在HSSFUtilDate(UtilDate的子类)上访问它们。所以这可能没什么关系。
ColA    | ColB....(few other columns)
4-SEP-89|(other values)