在java中使用POI读取Excel

时间:2015-12-08 20:50:47

标签: java excel apache-poi

我有一个excel文件,其中包含几个String数据类型列,一个数字列和一个日期列。我使用Apache POI来读取文件。 以下是处理数据类型的方法

Cell cell = sheet.getRow(i).getCell(j);

                if(cell!=null){
                    switch(cell.getCellType()){
                    case Cell.CELL_TYPE_STRING: 
                        cellValue = cell.getStringCellValue();
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
                        Date cellDate = cell.getDateCellValue();
                        cellValue = df.format(cellDate);
                        break;                          
                    case Cell.CELL_TYPE_BLANK:
                        break;
                    default :
                    }                       
                }

这适用于String和date数据类型。但对于数字,它将值转换为日期。我知道这是因为处理有问题。您能否就如何处理数字和日期数据类型提供建议?

谢谢, 山姆。

1 个答案:

答案 0 :(得分:2)

如果您知道哪些数据类型属于每列,您甚至不必每次都检查单元格类型:

switch (columnIndex) {
    case 0:
    case 1:
    case 2: { 
       cellValue = cell.getStringCellValue();
       break; 
    }
    case 3: {
       Date cellDate = cell.getDateCellValue();
       // ...
       break;
    } 
    case 4: {
       cellValue = cell.getNumericCellValue();
       break;
    }    
}

如果您的列可以包含日期和数字,则可以尝试此

import org.apache.poi.ss.usermodel.DateUtil;

case Cell.CELL_TYPE_NUMERIC:
   if (DateUtil.isCellDateFormatted(cell)) {
      // your code for date handling
   } else {
      cellValue = cell.getNumericCellValue();
   }