我目前正在使用Apache POI for Java在单元格中设置公式。
但是在运行程序并打开我创建和处理的Excel文件后,具有公式的单元格将公式包含为字符串,而不是公式应返回的值。
答案 0 :(得分:48)
HSSFCell
对象包含您需要调用的方法.setCellType
和.setCellFormula
:
// "cell" object previously created or looked up
String strFormula= "SUM(A1:A10)";
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(strFormula);
答案 1 :(得分:12)
以下代码对我来说很好,希望这对某人有用。
cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C70:C76)");
答案 2 :(得分:8)
不推荐使用Cell Constants,将从4.0版中删除 而不是细胞使用
CellType.FORMULA
String formula= "SUM(B4:B20)";
cell.setCellType(CellType.FORMULA);
cell.setCellFormula(formula);
答案 3 :(得分:7)
答案 4 :(得分:4)
您可以使用它来评估工作簿中的公式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
context.startForegroundService(new Intent(context, RunnerService.class));
}
else
{
context.startService(new Intent(context, RunnerService.class));
}
答案 5 :(得分:1)
我遇到了类似的问题,"SUM(B4:B20)"
对我来说不起作用,因为工作表是动态生成的。问题出在细胞参考上。
在https://stackoverflow.com/a/2339262/2437655和https://stackoverflow.com/a/33098060/2437655的基础上,我能够生成实际公式。 e.g。
val totalProductQtyPerUserCell = userDetailsRow.createCell(products.size + 1)
totalProductQtyPerUserCell.cellType = HSSFCell.CELL_TYPE_FORMULA
totalProductQtyPerUserCell.cellFormula = "SUM(${CellReference.convertNumToColString(1)}${totalProductQtyPerUserCell.row.rowNum + 1}:${CellReference.convertNumToColString(products.size)}${totalProductQtyPerUserCell.row.rowNum + 1})"
希望有所帮助。
答案 6 :(得分:1)
这是一种建议的方式:
Workbook workbook1 = new SXSSFWorkbook(-1);
Sheet newSheet = workbook1.createSheet("Valuations");
Row newRow = newSheet.createRow(i-1);
newRow.createCell(L++).setCellFormula("AVERAGE(" + "E" + i + ":" + "G" + i + ")");
其中E和G是A1,B1,C1 .... E1 ... G1之类的列
我在上面的栏中表示一个数字。
L ++只是一个增量计数器。