我正在使用Apache POI读取excel文件。无法阅读日期。在excel中,日期格式2017-03-15 6:00(格式格式=自定义)&使用poi,阅读42809.25

时间:2017-03-07 05:24:45

标签: apache-poi

#我正在使用Apache POI读取excel文件。无法阅读日期。在excel中,日期格式2017-03-15 6:00(格式格式=自定义)&使用poi,阅读42809.25

cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
    int dataType = cell.getCellType();
    if (dataType == 0) {
        String cellData1 = NumberToTextConverter.toText(cell.getNumericCellValue());
        return cellData1;

    } else {
        String cellData = cell.getStringCellValue();
        return cellData;
    }

2 个答案:

答案 0 :(得分:1)

如果您知道哪个单元格,即列位置说每行中的2将是一个日期,您可以直接转到row.getCell(2).getDateCellValue()

查看POI的DateUtil类中处理Excel表格中日期的方法DateUtil.isCellDateFormatted()

或者您可以获得如下所示的日期

if (DateUtil.isCellDateFormatted(cell))
{
try {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  cellValue = sdf.format(cell.getDateCellValue());

} catch (ParseException e) {
        e.printStackTrace();
}
}

答案 1 :(得分:1)

感谢Dhaval :)我尝试使用您的代码和其他一些行。现在,下面的代码对我有用。

cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
            if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                if (DateUtil.isCellDateFormatted(cell)) {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
                    String cellDate1 = sdf.format(cell.getDateCellValue());
                    return cellDate1;
                } else {
                    String cellData2 = NumberToTextConverter.toText(cell.getNumericCellValue());
                    return cellData2;
                }
            } else {
                String cellData = cell.getStringCellValue();
                return cellData;
            }