本文以2003XLS读取方式代码块举例,可以解决单元格CELL数据类型及公式问题。
全过程比较繁琐恕不例举。
//获取公式运行结果处理cell值[以XLS举例]
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.CellValue;
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
CellValue cellValue = evaluator.evaluate(cell);
//cellValue只会是Boolean;Numeric;String;Error四种
switch (cellValue.getCellTypeEnum()) {
case BOOLEAN: //布尔
Boolean boolean = cellValue.getBooleanValue();
break;
case NUMERIC: //数字或日期
if (HSSFDateUtil.isCellDateFormatted(cell)) { //日期[从cell获取]
Date date = cell.getDateCellValue();
} else { //数字
Double double = cellValue.getNumberValue();
}
break;
case STRING:
String string = cellValue.getStringValue();
break;
case FORMULA:
case _NONE:
case BLANK:
case ERROR:
default:
//空值
break;
}
参考资料:http://poi.apache.org/components/spreadsheet/eval.html
转载请贴地址