这只是我在项目里面遇到的问题,以及解决方法,写法比较笨拙,可以参考
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
Cell freight_new = row.getCell(j);//获取列
CellValue cellValue = evaluator.evaluate(freight_new);
if(cellValue.getCellType() == freight_new.CELL_TYPE_NUMERIC){
Double freights = Double.valueOf(cellValue.getNumberValue());
//保留两个小数点
BigDecimal bg = new BigDecimal(freights);
double freight_tf = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
freight = String.valueOf(freight_tf);
}
这是我从别的地方看到的一段比较高级的代码
private CellValue formulaEvaluation(Cell cell) { FormulaEvaluator formulaEval = wbook.getCreationHelper().createFormulaEvaluator(); return formulaEval.evaluate(cell); } public Double obtieneObjetoNumericoCelda(Cell cell) { Double dblValue = null; if (cell != null) { switch(cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: dblValue = cell.getNumericCellValue(); break; case Cell.CELL_TYPE_FORMULA: CellValue objCellValue = formulaEvaluation(cell); if (objCellValue.getCellType() == Cell.CELL_TYPE_NUMERIC) { dblValue = objCellValue.getNumberValue(); } break; } } return dblValor; }