44

現在、Apache POI for Java を使用してセルに数式を設定しています。

しかし、プログラムを実行し、作成して処理した Excel ファイルを開くと、数式を含むセルには、数式が返すはずの値ではなく、数式が文字列として含まれています。

4

7 に答える 7

58

HSSFCellオブジェクトにはメソッドが.setCellTypeあり、次の.setCellFormulaように呼び出す必要があります。

// "cell" object previously created or looked up
String strFormula= "SUM(A1:A10)";
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(strFormula);
于 2010-02-26T03:07:39.297 に答える
19

セル定数は非推奨であり、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);
于 2017-04-26T12:31:54.727 に答える
13

以下のコードは私にとってはうまくいきました。これが誰かに役立つことを願っています。

cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C70:C76)");
于 2013-02-18T11:12:57.363 に答える
7

Apache POI はユーザー定義関数をサポートしていません。

ドキュメントから:

ユーザー定義関数はサポートされておらず、すぐに実行される可能性は低いことに注意してください...少なくとも、Java で VB が実装されるまでは!

于 2012-11-26T07:51:55.593 に答える
6

これを使用して、ブック内の数式を評価できます。

        // Evaluate all formulas in the sheet, to update their value
    FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
    formulaEvaluator.evaluateAll();
于 2018-08-13T14:35:21.950 に答える
1

推奨される方法の 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++ は単純なインクリメンタル カウンターです。

于 2020-01-10T20:03:22.680 に答える