POI 读取单元格内容2种方式(数值、文本、日期、布尔、公式类型)

 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 "";
    }
    
}

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值