Javaとエクセル操作: データの読み書きと分析

Javaを使用してエクセル操作を行う方法について解説します。この記事では、Apache POIというJavaライブラリを使ってエクセルのデータを読み込み、書き込み、そして分析する方法を紹介します。

目次

  1. Apache POIとは?
  2. 環境設定
  3. エクセルデータの読み込み
  4. エクセルデータの書き込み
  5. エクセルデータの分析
  6. コード例

1. Apache POIとは?

Apache POIは、JavaプログラムでMicrosoft Officeファイルを操作するためのオープンソースのライブラリです。特にエクセルファイルの読み書きには、HSSF(.xlsファイル用)とXSSF(.xlsxファイル用)というコンポーネントが利用できます。

2. 環境設定

まずは、Apache POIライブラリを利用できるようにするために環境設定を行います。

Mavenを使用する場合:

pom.xml ファイルに以下の依存関係を追加してください。

<dependencies>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version>
  </dependency>

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

Gradleを使用する場合:

build.gradle ファイルに以下の依存関係を追加してください。

dependencies {
  implementation 'org.apache.poi:poi:5.2.2'
  implementation 'org.apache.poi:poi-ooxml:5.2.2'
}

3. エクセルデータの読み込み

Apache POIライブラリを使ってエクセルファイルを読み込む方法について説明します。

  1. FileInputStreamを使って対象のファイルを読み込みます。
  2. Workbookインターフェイスの実装(HSSFWorkbook または XSSFWorkbook)を使ってエクセルワークブックオブジェクトを生成します。
  3. SheetRow、および Cellオブジェクトを順に取得し、データを読み込みます。

4. エクセルデータの書き込み

エクセルファイルへの書き込み手順は次の通りです。

  1. 新規または既存の Workbook オブジェクトを用意します。
  2. データを書き込む SheetRow、および Cell オブジェクトを作成または取得します。
  3. データを Cell オブジェクトに設定します。
  4. FileOutputStream を使ってファイルに書き込みます。

5. エクセルデータの分析

エクセルデータをJavaプログラムで効率よく処理するために、以下のような手法があります。

  1. コレクション(リスト、マップなど)を使ってデータの集計を行います。
  2. Java Stream APIを利用したデータ操作を行います。
  3. データの検索、フィルタリング、ソートを行います。

6. コード例

以下に、エクセルファイルの読み込み、書き込みおよびデータ処理のコード例を示します。

エクセルデータの読み込み

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

import java.io.FileInputStream;
import java.io.IOException;

public class ExcelReader {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("sample.xlsx");
        Workbook workbook = new XSSFWorkbook(fis);

        Sheet sheet = workbook.getSheetAt(0);
        for (Row row : sheet) {
            for (Cell cell : row) {
                String cellValue = DataFormatter(cell);
                System.out.print(cellValue + "\t");
            }
            System.out.println();
        }
        workbook.close();
        fis.close();
    }
    
    private static String DataFormatter(Cell cell) {
        DataFormatter formatter = new DataFormatter();
        return formatter.formatCellValue(cell);
    }
}

エクセルデータの書き込み

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

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelWriter {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();

        Sheet sheet = workbook.createSheet("新規シート");
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello, Excel!");

        FileOutputStream fos = new FileOutputStream("output.xlsx");
        workbook.write(fos);

        fos.close();
        workbook.close();
    }
}

この記事では、JavaApache POIライブラリを使ってエクセル操作を行う方法について学びました。これらの基本的な方法を応用し、自動化やデータ処理を含むエクセルタスクを効率的に実行することができます。