[英]How to set formulas in cells using Apache POI?
我目前正在使用Apache POI for Java 在單元格中設置公式。
但是在我運行程序並打開我創建和處理的 Excel 文件后,帶有公式的單元格將公式作為字符串包含,而不是公式應該返回的值。
HSSFCell
對象具有方法.setCellType
和.setCellFormula
,您需要像這樣調用它們:
// "cell" object previously created or looked up
String strFormula= "SUM(A1:A10)";
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(strFormula);
不推薦使用細胞常數,並將從 4.0 版中刪除,而不是從細胞使用中刪除
細胞類型公式
String formula= "SUM(B4:B20)";
cell.setCellType(CellType.FORMULA); cell.setCellFormula(formula);
setCellType() :基於@fenix 評論。 此方法已棄用,將在 POI 5.0 中刪除。 使用顯式 setCellFormula(String)、setCellValue(...) 或 setBlank() 來獲得所需的結果。
String formula= "SUM(B4:B20)";
cell.setCellFormula(formula);
下面的代碼對我來說很好用,希望這對某人有用。
cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C70:C76)");
您可以使用它來評估工作簿中的公式:
// Evaluate all formulas in the sheet, to update their value
FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateAll();
我遇到了類似的問題, "SUM(B4:B20)"
不能直接為我工作,因為工作表是動態生成的。 問題在於單元格引用。
在https://stackoverflow.com/a/2339262/2437655和https://stackoverflow.com/a/33098060/2437655的基礎上,我能夠生成實際的公式。 例如
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})"
希望有所幫助。
這是一種建議的方法:
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++ 只是一個增量計數器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.