現在、Apache POI for Java を使用してセルに数式を設定しています。
しかし、プログラムを実行し、作成して処理した Excel ファイルを開くと、数式を含むセルには、数式が返すはずの値ではなく、数式が文字列として含まれています。
現在、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);
セル定数は非推奨であり、Cell Use の代わりにバージョン 4.0 から削除されます
CellType.FORMULA
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)");
Apache POI はユーザー定義関数をサポートしていません。
ドキュメントから:
ユーザー定義関数はサポートされておらず、すぐに実行される可能性は低いことに注意してください...少なくとも、Java で VB が実装されるまでは!
これを使用して、ブック内の数式を評価できます。
// Evaluate all formulas in the sheet, to update their value
FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateAll();
推奨される方法の 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のような
列で、i は上記の列の数字を表します。
L++ は単純なインクリメンタル カウンターです。