How to read Excel cell having Date with Apache POI?

前端 未结 8 2238
面向向阳花
面向向阳花 2020-11-28 03:57

I\'m using Apache POI 3.6, I want to read an excel file which has a date like this 8/23/1991.

 switch (cell.getCellType()) {

   ...
   ...

            


        
相关标签:
8条回答
  • 2020-11-28 04:41

    Yes, I understood your problem. If is difficult to identify cell has Numeric or Data value.

    If you want data in format that shows in Excel, you just need to format cell using DataFormatter class.

    DataFormatter dataFormatter = new DataFormatter();
    String cellStringValue = dataFormatter.formatCellValue(row.getCell(0));
    System.out.println ("Is shows data as show in Excel file" + cellStringValue);  // Here it automcatically format data based on that cell format.
    // No need for extra efforts 
    
    0 讨论(0)
  • 2020-11-28 04:43

    NOTE: HSSFDateUtil is deprecated

    If you know which cell i.e. column position say 0 in each row is going to be a date, you can go for row.getCell(0).getDateCellValue() directly.
    http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html#getDateCellValue()

    UPDATE: Here is an example - you can apply this in your switch case code above. I am checking and printing the Numeric as well as Date value. In this case the first column in my sheet has dates, hence I use row.getCell(0).

    You can use the if (HSSFDateUtil.isCellDateFormatted .. code block directly in your switch case.

    if (row.getCell(0).getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
        System.out.println ("Row No.: " + row.getRowNum ()+ " " +
            row.getCell(0).getNumericCellValue());
    
        if (HSSFDateUtil.isCellDateFormatted(row.getCell(0))) {
            System.out.println ("Row No.: " + row.getRowNum ()+ " " + 
                row.getCell(0).getDateCellValue());
        }
    }
    

    The output is

    Row No.: 0 39281.0
    Row No.: 0 Wed Jul 18 00:00:00 IST 2007
    Row No.: 1 39491.0
    Row No.: 1 Wed Feb 13 00:00:00 IST 2008
    Row No.: 2 39311.0
    Row No.: 2 Fri Aug 17 00:00:00 IST 2007
    
    0 讨论(0)
提交回复
热议问题