Microsoft Excelの強力なフォーミュラ機能は、複雑な計算、データ分析、動的レポートの作成に不可欠です。しかし、Javaライブラリを使用してこれらの定型操作を自動化できたらどうでしょうか?それがApache Poiが登場する場所です。このブログ投稿では、Apache POIライブラリを使用してJavaアプリケーション内からExcelフォーミュラを計算し、XLSXファイルとしてワークブックを保存する方法を示します。

式と計算の理解

フォーミュラは、Excelの機能の中心にあります。数学操作を実行し、データを操作し、異なるセル間で関係を作成できます。 Apache Poiは、Java開発者がこれらの式をプログラムで生成および操作し、自動化とカスタマイズを可能にする権限を与えます。

プロジェクトのセットアップ

フォーミュラの詳細に飛び込む前に、Apache Poiと連携するようにプロジェクトを設定しましょう。 Javaプロジェクトに適切なPOIライブラリを含める必要があります。 Apache POI Webサイトからライブラリをダウンロードするか、MavenやGradleなどの依存管理ツールを介して追加できます。プロジェクトの開発環境のセットアップに関する詳細については、Apache POI APIの概要記事を確認してください。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.0.1</version>
</dependency>

基本式の作成

簡単な例から始めましょう。数字を含む2つの列のあるExcelシートがあると想像してください。これらの数値の合計を3番目の列で計算します。 ApachePoiを使用してこれを達成する方法は次のとおりです。

必要なクラスをインポート

Workbook、Sheet、Rowなど、Apache POIライブラリから必要なクラスをインポートすることから始めます。

目的のセルにアクセス

GetCell()メソッドを使用して、合計する数値を含むセルにアクセスします。

式を作成

formulaを生成するためにcreateformula()メソッドを使用します。この場合、それは合計(A2:B2)のようなものになります。

式をターゲットセルに設定します

setcellformula()メソッドを使用して結果を表示するようにしたい場所に式をセルに割り当てます。

式を評価する

式を設定した後、 evaluateFormulacell() メソッドを使用して、結果を計算して入力します。

apache poi javaライブラリを使用したExcelフォーミュラ

次のコードサンプルを使用してみましょう。

  • 追加 式にセルに2つの値を追加する
  • パワー セル内の値のパワーを計算する式
  • max セルの最大値を取得するための式
  • fact セル内の値の因子を計算する式
  • sqrt 式セル内の値の平方根を計算する式 次のコードサンプルは、Javaアプリケーション内からのこれらのExcel式の使用を示しています。
XSSFWorkbook wb = new XSSFWorkbook(); 
XSSFSheet spreadsheet = wb("formula");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell = row.createCell(1);
cell.setCellValue("A = ");
cell = row.createCell(2);
cell.setCellValue(2);
row = spreadsheet.createRow(2);
cell = row.createCell(1);
cell.setCellValue("B = ");
cell = row.createCell(2);
cell.setCellValue(4);
row = spreadsheet.createRow(3);
cell = row.createCell(1);
cell.setCellValue("Total = ");
cell = row.createCell(2);
// Create SUM formula
cell.setCellFormula("SUM(C2:C3)");
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");
row = spreadsheet.createRow(4);
cell = row.createCell(1);
cell.setCellValue("POWER =");
cell=row.createCell(2);
// Create POWER formula
cell.setCellFormula("POWER(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("POWER(C2,C3)");
row = spreadsheet.createRow(5);
cell = row.createCell(1);
cell.setCellValue("MAX = ");
cell = row.createCell(2);
// Create MAX formula
cell.setCellFormula("MAX(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("MAX(C2,C3)");
row = spreadsheet.createRow(6);
cell = row.createCell(1);
cell.setCellValue("FACT = ");
cell = row.createCell(2);
// Create FACT formula
cell.setCellFormula("FACT(C3)");
cell = row.createCell(3);
cell.setCellValue("FACT(C3)");
row = spreadsheet.createRow(7);
cell = row.createCell(1);
cell.setCellValue("SQRT = ");
cell = row.createCell(2);
// Create SQRT formula
cell.setCellFormula("SQRT(C5)");
cell = row.createCell(3);
cell.setCellValue("SQRT(C5)");
wb.getCreationHelper().createFormulaEvaluator().evaluateAll();
FileOutputStream out = new FileOutputStream("formula.xlsx");
wb.write(out);
out.close();
System.out.println("fromula.xlsx written successfully");

結論

Apache POIは、Javaコードを介してExcelフォーミュラと計算を自動化およびカスタマイズする可能性のロックを解除します。財務レポート、データ分析ツール、またはExcel操作を伴うアプリケーションを構築する場合でも、Apache Poiのフォーミュラ機能はツールキットに強力な追加です。 Apache POIを使用してフォーミュラを作成、評価、および管理する方法を理解することにより、ワークフローを合理化し、精度を高め、貴重な時間を節約できます。