2017-06-27 76 views
0

私は配列式(https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686-9372-ECFD5CAA57C7)を定義したExcelシート(xslx)を持っています。 それは独特の魅力のように機能します。 私はapache poiを使って、そのExcelシートの値をプログラム的に操作します。その操作の後、その配列式の結果を再計算したいが、どうやってそれを行うのか分からない。Apache poiの配列式

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); 
XSSFRow row = sheet.getRow(i); 
Cell cell = row.getCell(j); 
evaluator.evaluateCell(cell); 
double value = cell.getNumericValue(); 

を配列数式を使用する方法クラスXSSFCellで

void setCellArrayFormula(String formula, CellRangeAddress range) 

とクラスXSSFSheetで

public CellRange<XSSFCell> setArrayFormula(String formula, CellRangeAddress range) 

がある:私は次のようにそれを行う "通常の" 式 。

cell.setCellArrayFormula("SUM(ABS(H2:H5))", new CellRangeAddress(2,5,7,7)); のような呼び出しで式を設定した後、私はその式の結果を取得する方法がわからない(しかし、私はまた、これはApacheのポイで配列数式を使用するための正しい方法であるかどうかを確認していない。でExcelこのようにしなければならない{=SUM(ABS(H2:H5))}

誰もがapache poiで配列数式を使用する方法を知っていますか?ありがとうございました!

答えて

1

Apache POI(3.17)の現在のバージョンでは、このような配列式はサポートされていません。 (私が信じる)Sheet.setArrayFormula()は、ファイルサイズを最適化するために同じ数式を複数のセルに適用します。

POIは「テーブル式」と呼ばれることもあり、サポートされていません(https://poi.apache.org/spreadsheet/formula.html)。

ただし、これらの種類の数式のサポートはPOI 4.0になっています(現在はマトリックス型の操作に限られているため、現在の夜間にはまだ動作しません)。なぜこの良いニュースですか?その部分は、そのようなすべての式がある時点でサポートされるようになり始めているためです。だから私はそれが起こると思う(注:私はPOIプロジェクトに関与していない、私はそれを使用し、この機能は私にとって重要です)。