0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaでExcelファイルのデータを読み取る方法

Last updated at Posted at 2025-06-13

日々の業務やアプリケーション開発において、Excelファイルからデータを読み取る場面はよくあります。Javaを使えば、Excelの内容を効率的かつ柔軟に取得し、データ処理やレポート生成などに活用できます。

本記事では、Spire.XLS for Java を使用して、Excelファイルを読み取る方法を3つのシナリオに分けて解説します。ファイルまたはストリームからの読み込み、セルの内容の取得、データ型や数式の扱いまで、実用的なコードとともに紹介します。

使用ライブラリ:Free Spire.XLS for Java

Maven:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls.free</artifactId>
    <version>5.3.0</version>
</dependency>

方法1:Excelファイルを読み取り、すべてのセルを出力する

最も基本的な方法として、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();
        }
    }
}

ポイント:

  • getCellRange(i, j).getValue() はセルの生の文字列を返します。
  • 行・列はどちらも 1から開始(Excelの仕様と同じ)。

読み取り結果:
Javaを使用してExcelファイルのデータを読み込む


方法2:InputStreamを使ってExcelファイルを読み込む

ファイルが外部ストレージやWeb経由で提供される場合、InputStream を使って直接読み込むことができます。

サンプルコード

import com.spire.xls.*;
import java.io.*;

public class ReadExcelFromStream {
    public static void main(String[] args) throws FileNotFoundException {
        // ファイルのInputStreamを作成
        InputStream stream = new FileInputStream("data.xlsx");

        // Workbookに読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromStream(stream);

        System.out.println("Excelファイルの読み込みに成功しました。");
    }
}

ポイント:

  • 一時ファイルを保存せずに、直接ストリームから読み込めます。
  • .xlsx.xls の両形式に対応。

方法3:セルのデータ型や数式を取得する

Excelのセルには、文字列だけでなく、数値・日付・ブール値・数式など様々な形式があります。以下のコードは、セルの情報を多角的に取得する方法を示しています。

サンプルコード

import com.spire.xls.*;
import java.util.Date;

public class ReadCellTypes {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        workbook.loadFromFile("data.xlsx");

        Worksheet sheet = workbook.getWorksheets().get(0);
        CellRange cell = sheet.getRange().get(2, 1); // B2セルを取得

        String text = cell.getText(); // 表示される文字列
        String value = cell.getValue(); // 元の値(文字列)
        Object value2 = cell.getValue2(); // オブジェクト型(型に応じて自動判定)

        String formula = cell.getFormula(); // 数式(ある場合)
        String result = cell.getEnvalutedValue(); // 数式の計算結果

        double number = cell.getNumberValue(); // 数値
        Date date = cell.getDateTimeValue(); // 日付
        boolean bool = cell.getBooleanValue(); // ブール値

        System.out.println("表示文字列: " + text);
        System.out.println("元の値: " + value);
        System.out.println("数式: " + formula);
        System.out.println("計算結果: " + result);
        System.out.println("数値: " + number);
        System.out.println("日付: " + date);
        System.out.println("ブール値: " + bool);
    }
}

ポイント:

  • getFormula() で数式文字列を取得。
  • getEnvalutedValue() で数式の結果を取得。
  • セルの内容に応じて適切な型で取り出すことが可能。

まとめ

本記事では、JavaとSpire.XLSを使ってExcelファイルを読み取る方法を3つの視点から紹介しました:

  • ファイルからの逐次読み取り
  • InputStreamによる読み込み
  • セルのデータ型や数式の処理

これらの方法を組み合わせれば、より高度なExcelデータ処理にも対応できます。


関連リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?