我正在尝试使用POI读取excel文件。 第一个excel列是date(String type),第二个是string。
所以,如果我做cell.getStringCellValue()
但是,excel中有一个特定的行,其中两列都是数字类型。
因此我得到:
java.lang.IllegalStateException: Cannot get a text value from a numeric cell
System.out.println(dateCell.getNumericCellValue());
System.out.println(ctrCell.getNumericCellValue());
打印:
42360.0
0.3227586206896551
但在excel中,我可以将其视为:2015年12月22日和32.2758620689655%
请建议我如何从数字单元格中读取日期为12/22/2015而不是42360.0。
任何帮助都将受到高度赞赏!!
答案 0 :(得分:0)
试试这个:
Cell cell = row.getCell(colPos,Row.RETURN_BLANK_AS_NULL);
if (cell == null) {
value = "";
}
else {
value = cell.toString().trim();
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_NUMERIC:
value = BigDecimal.valueOf(cell.getNumericCellValue()).toPlainString().trim();
if (DateUtil.isCellDateFormatted(cell)) {
double val = cell.getNumericCellValue();
Date date = DateUtil.getJavaDate(val);
String dateFmt = null;
if(cell.getCellStyle().getDataFormat()==14){
dateFmt = "dd/mm/yyyy";
value = new CellDateFormatter(dateFmt).format(date);
}
else{
DataFormatter fmt = new DataFormatter();
String valueAsInExcel = fmt.formatCellValue(cell);
value = valueAsInExcel;
}
}
break;
case XSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue().trim();
break;
case XSSFCell.CELL_TYPE_BLANK:
value = "";
break;
default:
break;
}