java poi 导入excel时 读取单元格内容的方法 ,其中包含excel中有函数的读法
程序员文章站
2022-07-13 13:12:18
...
public static String getExcelCellValue(Cell cell) {
String ret = "";
try {
if (cell == null) {
ret = "";
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
ret = cell.getStringCellValue().trim();
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
ret = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss SSS");
} else {
ret = NumberToTextConverter.toText(cell.getNumericCellValue());
String temp = ret.substring(ret.indexOf(".") + 1, ret.length());
try {
if (Integer.parseInt(temp) == 0) {
ret = ret.substring(0, ret.indexOf("."));
}
} catch (Exception ex) {
}
}
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {//有公式的Excel单元格
//这样对于字符串cell.getStringCellValue()方法即可取得其值,如果公式生成的是数值,使用cell.getStringCellValue()方法会抛出IllegalStateException异常,在异常处理中使用cell.getNumericCellValue();即可。
try {
ret = String.valueOf(cell.getStringCellValue());
} catch (IllegalStateException e) {
ret = String.valueOf(cell.getNumericCellValue());
}
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_ERROR) {
ret = "" + cell.getErrorCellValue();
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
ret = "" + cell.getBooleanCellValue();
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
ret = "";
}
} catch (Exception ex) {
ex.printStackTrace();
ret = "";
}
return ret;
}