如何使用Apache POI在单元格中设置公式?

vam*_*msi 37 java apache-poi

我目前正在使用Apache POI for Java在单元格中设置公式.

但是在我运行程序并打开我创建和处理的Excel文件后,具有公式的单元格将公式包含为字符串,而不是公式应返回的值.

小智 50

HSSFCell对象有方法.setCellType.setCellFormula你需要这样的呼吁:

// "cell" object previously created or looked up
String strFormula= "SUM(A1:A10)";
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(strFormula);
Run Code Online (Sandbox Code Playgroud)


小智 12

以下代码对我来说很好,希望这对某些人有用.

cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C70:C76)");
Run Code Online (Sandbox Code Playgroud)


Jin*_*P C 12

不推荐使用Cell Constants,将从4.0版而不是Cell Use中删除

CellType.FORMULA

String formula= "SUM(B4:B20)";
cell.setCellType(CellType.FORMULA);
cell.setCellFormula(formula);
Run Code Online (Sandbox Code Playgroud)

  • `Cell.setCellType(CellType)` 也已弃用(将从 Apache POI 5.0 中删除)。使用显式的“Cell.setCellFormula(String)”应该就足够了。 (2认同)

fil*_*lsa 7

Apache POI不支持用户定义的函数.

文档:

请注意,不支持用户定义的函数,并且不太可能很快完成...至少,直到Java中有VB实现!


小智 6

您可以使用它来评估工作簿中的公式:

        // Evaluate all formulas in the sheet, to update their value
    FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
    formulaEvaluator.evaluateAll();
Run Code Online (Sandbox Code Playgroud)