JavaでExcelファイルを読み込む方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaでExcelファイルを読み込む方法について解説しています。ここではApache POIを使ったファイルの読み込みを行います。全体の手順と書き方を学習しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

JavaでExcelファイルを読み込む方法について解説します。

Apache POIはJavaライブラリで、これを利用することでjavaプログラムがWordやExcel等のMicrosoft Office形式のファイルを読み書きすることができるようになります。

実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
 

なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Excelファイルを読み込む方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

Apache POIでExcelファイルを読み込む

Excelは列と行で構成されたセルの中に文字や数値等の情報を書き込むことができます。このExcelファイルに書き込まれた内容をjavaが読み取るプログラムを作成します。手順は以下の通りです。

1、Excelファイルへアクセスするためのオブジェクトを作成します

オブジェクトはorg.apache.poi.ss.usermodel.Workbookクラスです。java.io.Fileクラスのp部ジェクトを元に作成します。

2、Excelシートへのアクセス

1で作成したオブジェクトからgetSheetメソッドを使って、シート名を指定してアクセスします。

シートオブジェクトのクラスはorg.apache.poi.ss.usermodel.Sheetです。尚、シート名を文字列で指定する方法と0から始まるシート番号を指定する方法があります。

3、行へのアクセス

2のシートオブジェクトからgetRowメソッドを使って、行番号を指定してアクセスします。

行番号は0はじまりです。Excelファイル中に表示されている行番号とは異なるので注意しましょう。行オブジェクトのクラスはorg.apache.poi.ss.usermodel.Rowです。

4、セルへのアクセス

3の行オブジェクトからgetCellメソッドを使い、セル番号(左から順に0番始まり)を指定してアクセスします。

セルオブジェクトのクラスはorg.apache.poi.ss.usermodel.Cellです。

5、セル入力内容の取得

4のセルオブジェクトから取得します。記入されている内容が文字列と分かっている場合は文字列を取得するメソッドであるgetStringCellValue()を使います。

その他、

  • 数値を取得するためのメソッドgetNumericCellValue()
  • 日付を取得するためのメソッドgetDateCellValue()
  • 関数を取得するgetCellFormula()メソッド

等があるので、取得したい値に応じて使い分けを行います。

 

実際に書いてみよう

Excelファイルの内容を読み取り、コンソール出力するプログラムです。

・Excelファイルの準備

Sample.xlsx というファイルを用意し、そのなかに「Sheet1」という名前のシートを作成、A列1行目に”おはよう”という文字を入力しておきます。

・ライブラリのインストール

Mavenを使用し、必要なライブラリをインストールします。pom.xmlの依存関係に以下を指定します。

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

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

・プログラム

import java.io.File;
import java.io.IOException;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class Sample {

  public static void main(String[] args) throws EncryptedDocumentException, IOException {

    //エクセルファイルへアクセスするためのオブジェクト
    Workbook excel = WorkbookFactory.create(new File("Sample.xlsx"));

    // シート名がわかっている場合
    Sheet sheet = excel.getSheet("Sheet1");

    //0行目
    Row row = sheet.getRow(0);

    //0番目のセル
    Cell cell = row.getCell(0);

    //文字列の取得
    String value = cell.getStringCellValue();

    //取得した文字列の表示
    System.out.println(value);
  }

}

実行すると以下がコンソールに出力されます。

おはよう

 

[PR] Javaで挫折しない学習方法を動画で公開中

監修してくれたメンター

長屋雅美

独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。
JavaやC♯、shellscriptを用いた開発を主に担当し、TechAcademyではJavaコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間でJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。