チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Java»Spire.XLS for Java»文書操作»Java で Excel ファイル(XLS/XLSX)を読み込む方法 – 完全ガイド
2026-06-02

Java で Excel ファイル(XLS/XLSX)を読み込む方法 – 完全ガイド

Java で Excel ファイルを読み込む方法

Java を 使用した Excel ファイルの読み取りは、特にレポート、財務データ、ユーザーレコード、サードパーティとの連携を扱う際に、エンタープライズアプリケーションでよく求められる要件です。データインポート機能の構築、スプレッドシート分析の実行、Web アプリケーションへの Excel 解析の統合など、いずれの場合でも、Java で Excel ファイルを効率的に読み取る方法を学ぶことは不可欠です。

本チュートリアルでは、Java を使用して .xls および .xlsx ファイルを読み込む方法を解説します。さらに、実践的な Java コード例を通じて、大容量ファイルの処理、InputStream からの読み込み、行単位でのデータ取得方法なども紹介します。

1. Java プロジェクトのセットアップ

Java で Excel ファイルを読み込むには、スプレッドシート形式に対応したライブラリが必要です。Spire.XLS for Java は、.xls(旧 Excel 形式)と .xlsx(XML ベースの新形式)の両方をサポートしており、Excel ファイルの読み込みを簡単に行える高水準 API を提供しています。

Spire.XLS をプロジェクトに追加する

Maven を使用している場合は、以下を pom.xml に追加してください。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>16.4.1</version>
    </dependency>
</dependencies>

Maven を使用していない場合は、公式の Spire.XLS サイトから JAR ファイルをダウンロードし、classpath へ追加することも可能です。

小規模な Excel 処理であれば、Free Spire.XLS for Java を利用することもできます。

2. Java で XLSX/XLS ファイルを読み込む方法

Java では、Workbook を読み込み、ワークシート・行・セルを順番に走査することで Excel ファイルを簡単に読み込めます。

.xlsx は現在主流の Excel 形式であり、.xls は旧来のバイナリ形式です。Spire.XLS では、同じコードで両形式をシームレスに扱うことができます。

Excel ファイル(XLSX/XLS)の読み込み

以下は、Excel ファイルを読み込んで内容を出力する基本的なサンプルです。

import com.spire.xls.*;

public class ReadExcel {

    public static void main(String[] args) {

        // Workbook オブジェクトを作成し、Excel ファイルを読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromFile("data.xlsx"); // または "data.xls"

        // 最初のワークシートを取得
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 使用されている行と列をループ処理
        for (int i = 1; i <= sheet.getLastRow(); i++) {

            for (int j = 1; j <= sheet.getLastColumn(); j++) {

                // セルのテキストを取得
                String cellText = sheet.getCellRange(i, j).getValue();

                System.out.print(cellText + "\t");
            }

            System.out.println();
        }
    }
}

ファイルパスを .xls ファイルに置き換えても、コードは変更されません。これにより、形式に関係なく Java を使用して Excel ファイルを簡単に読み取ることができます。

読み込んだ Excel ファイルとコンソール出力例:

Excel ファイルの読み込み

行オブジェクトを使って Excel を1行ずつ読み込む

ユーザー入力の検証や業務ルールの適用などでは、各行を1件のデータとして処理したい場合があります。そのような場合は、getRows() メソッドを使って行単位で Excel を読み込むことができます。

for (int i = 0; i < sheet.getRows().length; i++) {

    // 行を取得
    CellRange row = sheet.getRows()[i];

    if (row != null && !row.isBlank()) {

        for (int j = 0; j < row.getColumns().length; j++) {

            String text = row.getColumns()[j].getText();

            System.out.print((text != null ? text : "") + "\t");
        }

        System.out.println();
    }
}

この方法は、バッチ処理や行単位でデータを扱うケースに特に適しています。

InputStream から Excel ファイルを読み込む

Web アプリケーションやクラウドサービスでは、Excel ファイルをストリーム形式で受け取ることが一般的です。

以下は、InputStream から Excel を読み込む方法です。

import com.spire.xls.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class ReadExcel {

    public static void main(String[] args) throws FileNotFoundException {

        // InputStream を作成
        InputStream stream = new FileInputStream("data.xlsx");

        // ストリームから Excel を読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromStream(stream);

        System.out.println("Excel ファイルを正常に読み込みました。");
    }
}

これは、ファイルアップロード、メールの添付ファイル、またはリモートストレージに保存された Excel ファイルを処理する場合に役立ちます。

さまざまな形式でセル値を取得する

Excel ファイルを読み込み、セルへアクセスできるようになると、Spire.XLS を使用して、書式設定されたテキスト、生の値、数式など、さまざまな形式でコンテンツを読み取ることができます。

以下はその例です。

CellRange cell = sheet.getRange().get(2, 1); // B2

// Excel 上で表示されるテキスト
String text = cell.getText();

// 生の文字列値
String value = cell.getValue();

// 汎用オブジェクト(数値、真偽値、日付など)
Object rawValue = cell.getValue2();

// 数式
String formula = cell.getFormula();

// 数式の計算結果
String result = cell.getEnvalutedValue();

// 数値セル
double number = cell.getNumberValue();

// 日付セル
java.util.Date date = cell.getDateTimeValue();

// 真偽値セル
boolean bool = cell.getBooleanValue();

ヒントgetValue2() は実際のオブジェクトを返すため、柔軟な処理に向いています。getText() は Excel 上の表示内容を取得したい場合に便利です。

関連記事Java で Excel ファイルにデータを書き込む方法

3. 大容量 Excel ファイルを読み込む際のベストプラクティス

Excel ファイルに数万行のデータや複数シートが含まれている場合、パフォーマンスが問題になることがあります。

効率的に大容量 Excel ファイルを読み込むために、以下のポイントを意識しましょう。

  • 必要なシートのみをロードする
  • 関連する列または行にのみアクセスする
  • ワークシート全体をメモリへ保持しない
  • 行ごとの読み取りパターンを使用する

以下は、空でない行のみを処理する効率的な例です。

for (int i = 1; i <= sheet.getRows().length; i++) {

    Row row = sheet.getRows()[i];

    if (row != null && !row.isBlank()) {

        // データが存在する行のみ処理
    }
}

Spire.XLS 自体も効率的なメモリ管理を行っていますが、これらのベストプラクティスを守ることで、よりスケーラブルな Excel 処理を実現できます。

参照Java を使用して Excel の空白行と列を削除する

4. 完全なサンプル:Java で Excel ファイルを読み込むプログラム

以下は、名前、メールアドレス、年齢、部署、ステータスなどの拡張列を持つ Excel ファイル(users.xlsx)を読み取る、完全に動作する Java の例です。コードは最初の3列(name, email, age)のみを抽出し、年齢が30歳以上のユーザーに絞り込んで出力します。

import com.spire.xls.*;

public class ExcelReader {

    public static void main(String[] args) {

        Workbook workbook = new Workbook();
        workbook.loadFromFile("users.xlsx");

        Worksheet sheet = workbook.getWorksheets().get(0);

        System.out.println("名前\tメールアドレス\t年齢");

        for (int i = 2; i <= sheet.getLastRow(); i++) {

            String name = sheet.getCellRange(i, 1).getValue();
            String email = sheet.getCellRange(i, 2).getValue();
            String ageText = sheet.getCellRange(i, 3).getValue();

            int age = 0;

            try {
                age = Integer.parseInt(ageText);

            } catch (NumberFormatException e) {

                continue; // 年齢データが不正な行をスキップ
            }

            if (age >= 30) {

                System.out.println(name + "\t" + email + "\t" + age);
            }
        }
    }
}

実行結果:

Java:Excelファイルの読み込み

このコードは、Java で Excel ファイルから特定のセルを読み取り、年齢などのデータにフィルターを適用するなど、意味のある表形式のデータを出力する方法を示しています。

5. まとめ

本記事では、Spire.XLS for Java を使用して、Java で .xls および .xlsx ファイルを読み込む方法を紹介しました。

主に以下の内容を学びました。

  • Java プロジェクトを Excel 読み取り機能付きでセットアップする方法
  • 行単位・ストリームベースで Excel を読み込む方法
  • 同一 API で旧形式・新形式を扱う方法
  • 大容量 Excel 処理時のベストプラクティス

アップロードされたスプレッドシート、静的なレポート、ストリームベースのファイルのいずれを読み取る場合でも、ここで提供された例は、Java アプリケーションに堅牢な Excel 処理機能を構築するのに役立ちます。

すべての制限を解除し、高度な Excel 機能を試したい場合は、無料の一時ライセンスを申請することも可能です。

6. FAQs

Q1: Java で Excel ファイルを動的に読み込むには?

A: Java で Excelファイルを動的に読み取るには、特に行数や列数が不明な場合、getLastRow() メソッドと getLastColumn() メソッドを使用して、実行時にデータ範囲を決定します。これにより、ハードコードされた制限なしに、プログラムをさまざまなスプレッドシートサイズに適応させることができます。

Q2: Java で Excel データを抽出するには?

A: Java で Excelファイルからデータを抽出するには、ワークブックをロードし、ネストされたループを使用してセルを反復処理します。getCellRange(row, column).getValue() で値を取得できます。Spire.XLS のようなライブラリはこのプロセスを簡素化し、.xls と .xlsx の両方の形式をサポートします。

Q3: Java で CSV ファイルを読み込むには?

A: CSV ファイルは、Javaの BufferedReader やファイルストリームを使って読み込めます。または、Spire.XLS は CSV 解析を直接サポートしており、Workbook.loadFromFile("data.csv", ",") のように区切り文字を指定して CSV ファイルをロードできます。

Q4: InputStream を使用して Java で Excel を読み込むには?

A: サーバーサイドアプリケーションでは、InputStream から Excel ファイルを読み込むケースがよくあります。Spire.XLS では、workbook.loadFromStream(inputStream) を呼び出し、ファイルベースの Excel ワークブックと同様に処理するだけです。

Read 14 times