JavaでExcelファイル(.xlsx)を読み書きする方法【Apache POI入門】

はじめに

業務アプリやデータ処理でよく使われるExcel(.xlsx)ファイル。Javaでは、Apache POIというライブラリを使って、Excelの読み書きが可能です。

この記事では、以下のような操作を紹介します

  • Excelファイルの新規作成
  • セルへのデータ書き込み
  • 既存ファイルの読み取り
  • 行・列の操作と保存

Apache POIとは?

Apache POIは、Microsoft Office文書をJavaで操作するためのオープンソースライブラリです。

  • .xls(HSSF)と.xlsx(XSSF)の両方に対応
  • Excelだけでなく、WordやPowerPointも操作可能

開発環境と準備

  • Java 11 以上
  • Maven(推奨)またはJar手動追加

Mavenの依存関係(pom.xml)

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

Excelファイルの作成と書き込み

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;

public class ExcelWriter {
  public static void main(String[] args) {
    try (Workbook workbook = new XSSFWorkbook()) {
      Sheet sheet = workbook.createSheet("データ");
      Row row = sheet.createRow(0);
      Cell cell = row.createCell(0);
      cell.setCellValue("こんにちは Excel");

      try (FileOutputStream out = new FileOutputStream("output.xlsx")) {
        workbook.write(out);
      }

      System.out.println("Excelファイルを書き出しました。");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

既存のExcelファイルを読み取る

import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.*;

public class ExcelReader {
  public static void main(String[] args) {
    try (Workbook workbook = WorkbookFactory.create(new FileInputStream("output.xlsx"))) {
      Sheet sheet = workbook.getSheetAt(0);
      Row row = sheet.getRow(0);
      Cell cell = row.getCell(0);
      System.out.println("読み込んだ内容: " + cell.getStringCellValue());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

行・列の操作と数式対応

複数のセルに書き込み

for (int i = 0; i < 10; i++) {
  Row row = sheet.createRow(i);
  for (int j = 0; j < 5; j++) {
    Cell c = row.createCell(j);
    c.setCellValue("R" + i + "C" + j);
  }
}

数式を設定する

Cell formulaCell = sheet.createRow(1).createCell(2);
formulaCell.setCellFormula("SUM(A1:B1)");

Excelファイルの保存と出力先確認

  • ファイルはFileOutputStreamで任意のパスに保存可能
  • Javaアプリから定期レポートを自動出力する際にも便利です

まとめ

Apache POIを使えば、JavaでExcelファイルを自在に操作できます。業務レポートの自動作成や、ユーザー入力をExcel形式で保存する機能など、多くの場面で活用可能です。

タイトルとURLをコピーしました