1 formatCellValue()
formatter.formatCellValue()可以直接获取单元格内容。
public static String getCellValue(Cell cell,Workbook workbook){
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
DataFormatter formatter = new DataFormatter();
//单元格不设置数字格式
cell.setCellStyle(null);
return formatter.formatCellValue(cell,evaluator);
}
注:
(1)转化公式类型的值时会返回公式,是因为formatCellValue()只有一个cell参数,只有加上evaluator参数才能将公式类型的值变为计算结果。
(2)单元格数字太长时会自动变为科学计数法,是因为数字类型的单元格的数字格式就是科学计数法,所有要将单元格的cellStyle设为null,这样就会显示所有数字。
2 根据单元格类型获取内容
public static String getCellValue(Cell cell,Workbook workbook){
if(cell==null){
return "";
}
if(cell.equals(CellType.STRING)){//字符串
return cell.getRichStringCellValue().getString();
}else if(cell.equals(CellType.NUMERIC)){//数值
if (DateUtil.isCellDateFormatted(cell)) {//日期类型
return cell.getDateCellValue();
} else {//数值类型
return cell.getNumericCellValue();
}
}else if(cell.equals(CellType.FORMULA)){//公式类型
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
return evaluator.evaluate(cell).getNumberValue()+"";
}else if(cell.equals(CellType.BOOLEAN)){//布尔类型
return cell.getBooleanCellValue()? "TRUE" : "FALSE";
}else{
return "";
}
}