public static String getCellValue(Row row, int cellIndex, FormulaEvaluator formulaEvaluator) {
Cell cell = row.getCell(cellIndex);
if (ObjectUtil.isNull(cell)) {
return "";
}
NumberFormat nf = NumberFormat.getInstance();
switch (cell.getCellType()) {
// 数字类型
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
//非线程安全
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(cell.getDateCellValue());
} else {
String s = nf.format(cell.getNumericCellValue());
// 处理科学计数法
if (s.contains(",")) {
s = s.replace(",", "");
}
return s;
}
// 字符类型
case STRING:
return cell.getRichStringCellValue().getString().trim();
// 公式
case FORMULA:
return String.valueOf(formulaEvaluator.evaluate(cell).getNumberValue());
default:
DataFormatter formatter = new DataFormatter();
return formatter.formatCellValue(cell);
}
}
FormulaEvaluator formulaEvaluator = null;
Workbook wb;
inputStream = file.getInputStream();
String fileName = file.getOriginalFilename();
assert fileName != null;
if (fileName.matches(SystemConstant.Regex.XLSX)) {
wb = new XSSFWorkbook(inputStream);
formulaEvaluator = new XSSFFormulaEvaluator((XSSFWorkbook) wb);
} else {
wb = new HSSFWorkbook(inputStream);
formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) wb);
}