ApachePOIを使用したExcelでの数式の設定
1. 概要
このクイックチュートリアルでは、簡単な例を使用して、 ApachePOIを使用してMicrosoftExcelスプレッドシートに数式を設定する方法について説明します。
2. Apache POI
Apache POIは、MS Office ファイルを作成、変更、および表示するためのAPIをプログラマーに提供する人気のあるオープンソースJavaライブラリです。
ワークブックを使用してExcelファイルとその要素を表します。 ExcelファイルのCellは、FORMULAなどのさまざまなタイプを持つことができます。
Apache POIの動作を確認するために、Excelファイルの列Aと列Bの値の合計を減算する式を設定します。 リンクされたファイルには、以下のデータが含まれています。
3. 依存関係
まず、POI依存関係をプロジェクトpom.xmlファイルに追加する必要があります。 Excel 2007以降のワークブックを使用するには、poi-ooxmlを使用する必要があります。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.0</version>
</dependency>
以前のバージョンのExcelでは、代わりにpoi依存関係を使用する必要があることに注意してください。
4. セルルックアップ
まず、ファイルを開いて適切なワークブックを作成しましょう。
FileInputStream inputStream = new FileInputStream(new File(fileLocation));
XSSFWorkbook excel = new XSSFWorkbook(inputStream);
次に、使用するセルを作成または検索する必要があります。 以前に共有したデータを使用して、セルC1を編集します。
これは最初のシートと最初の行にあり、POIに最初の空白の列を要求できます。
XSSFSheet sheet = excel.getSheetAt(0);
int lastCellNum = sheet.getRow(0).getLastCellNum();
XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1);
5. 数式
次に、調べたセルに数式を設定します。
前述のように、列Aの合計から列Bの合計を減算してみましょう。 Excelでは、これは次のようになります。
=SUM(A:A)-SUM(B:B)
そして、それをsetCellFormulaメソッドを使用してformulaCellに書き込むことができます。
formulaCell.setCellFormula("SUM(A:A)-SUM(B:B)");
これで、数式は評価されません。これを行うには、POIのXSSFFormulaEvaluatorを使用する必要があります。
XSSFFormulaEvaluator formulaEvaluator =
excel.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateFormulaCell(formulaCell);
結果は、次の空の列の最初のセルに設定されます。
ご覧のとおり、結果が計算され、列Cの最初のセルに保存されます。 また、数式は数式バーに表示されます。
FormulaEvaluator クラスは、Excelワークブックで FORMULA を評価する他のメソッド、たとえば EvaluationAll を提供し、すべてのセルをループして評価することに注意してください。
6. 結論
このチュートリアルでは、Apache POI APIを使用して、JavaのExcelファイルのセルに数式を設定する方法を示しました。
この記事の完全なソースコードは、GitHubでから入手できます。