Bootstrap

java在excel编写公式并执行,解决公式setForceFormulaRecalculation不生效的原因

当java操作excel表格的时候,有时候通过公式计算比直接后台计算要方便,所以公式计算的重要性体现了出来

// 单元格类型
cell.setCellType(CellType.FORMULA.getCode());
// 公式
cell.setCellFormula("SUM(J20:J"+(count+1)+")/SUM(G20:G"+(count+1)+")");

单元格类型有这些

public enum CellType {
    @Internal(
        since = "POI 3.15 beta 3"
    )
    _NONE(-1), // 无类型
    NUMERIC(0), // 数值类型,整数,小数,日期
    STRING(1), // 字符串
    FORMULA(2), // 公式
    BLANK(3), // 空单元格,空值但是有样式
    BOOLEAN(4), // 布尔值
    ERROR(5); // 错误单元格

注意
cell.setCellValue(data1.toString())的时候,如果进行数值的公式计算,则需要进行类型转换cell.setCellValue(Double.parseDouble(data1.toString())) ,否则算不出结果,会一直为0,但是双击单元格需要计算的数据,又会展示有值
当然,最后还需要进行强制公式计算

sheet.setForceFormulaRecalculation(true);// 重新计算公式的意思
;