
Excelファイルは、レポート、ユーザー入力フォーム、他システムからエクスポートされたデータなど、構造化された情報の保存・共有に広く利用されています。多くのJavaアプリケーションでは、これらのExcelファイルを読み込み、データを抽出して後続処理に活用する必要があります。
Javaにおいて「Excelファイルを解析する」とは、通常 .xls または .xlsx ファイルを読み込み、ワークシートを取得し、セルの値を文字列・数値・日付などのJavaで扱いやすい形式に変換することを指します。
本記事では、Spire.XLS for Java を使用し、基本的なテキスト読み取りからデータ型を意識した解析方法まで、実践的な例を交えて段階的に解説します。
目次
- 環境の準備
- JavaでExcelファイルを読み込み・解析する
- Excelデータをテキストとして読み取る(基本解析)
- Excelセルを異なるデータ型として解析する
- 実務でよくある解析シナリオ
- まとめ
- よくある質問
環境の準備
Excelファイルを解析する前に、プロジェクトへ Spire.XLS for Java を追加します。本ライブラリは .xls と .xlsx の両形式に対応しており、Microsoft Excelをインストールする必要はありません。
依存関係の追加
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>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>16.1.3</version>
</dependency>
依存関係を追加すれば、JavaでExcelファイルの読み込みおよび解析を開始できます。
Mavenを使用しない場合は、Spire.XLS for Java をダウンロードし、手動でプロジェクトに追加することも可能です。
JavaでExcelファイルを読み込み・解析する
Excelファイルを解析する最初のステップは、ファイルを Workbook オブジェクトに読み込み、対象となるワークシートへアクセスすることです。
import com.spire.xls.*;
public class ParseExcel {
public static void main(String[] args) {
Workbook workbook = new Workbook();
workbook.loadFromFile("data.xlsx");
Worksheet sheet = workbook.getWorksheets().get(0);
System.out.println("読み込まれたワークシート: " + sheet.getName());
}
}
読み込み結果のプレビュー:

このコードは .xls と .xlsx の両方に対応しています。ワークシートを取得した後、行やセルを順に読み取ることができます。
Excelデータをテキストとして読み取る(基本解析)
多くの場合、特定のデータ型を意識せずに、Excelの内容をそのまま文字列として取得できれば十分です。この方法は、ログ出力、画面表示、簡易インポートなどに適しています。
すべてのセルを文字列として読み取る
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();
}
テキスト読み取り結果のプレビュー:

getValue() は、Excel上で表示されている形式に基づいた値を返します。精度や型変換を厳密に扱う必要がない場合、最も手軽な方法です。
読み取りだけでなく編集も行いたい場合は、JavaでSpire.XLSを使用してExcelドキュメントを編集する方法 を参照してください。
Excelセルを異なるデータ型として解析する
データ処理、検証、計算を行う場合、すべてを文字列として扱うだけでは不十分です。このようなケースでは、セルの値を適切なJavaデータ型へ変換する必要があります。
数値の解析(int / double / float)
Excelでは、日付・通貨・パーセンテージとして表示されていても、内部的には数値として保存されている場合が多くあります。
Spire.XLS for Java では getNumberValue() を使用して、セルの内部数値を直接取得できます。
CellRange usedRange = sheet.getAllocatedRange();
System.out.println("Raw number values:");
for (int i = usedRange.getRow(); i <= usedRange.getLastRow(); i++) {
for (int j = usedRange.getColumn(); j <= usedRange.getLastColumn(); j++) {
CellRange cell = sheet.getRange().get(i, j);
if (!(Double.isNaN(cell.getNumberValue())))
{
System.out.print(cell.getNumberValue() + "\t");
}
}
System.out.println();
}
数値読み取り結果のプレビュー:

このメソッドは、表示形式に関係なく、セルに格納されている実際の数値を返します。
用途に応じた型変換
取得した数値は、業務要件に応じて適切な型へ変換できます。
double numberValue = cell.getNumberValue();
// intに変換
int intValue = (int) numberValue;
// floatに変換
float floatValue = (float) numberValue;
// doubleのまま使用
double doubleValue = numberValue;
例えば、IDや数量は int、価格や残高は double や float が適しています。
注意:Excelの日付も内部的には数値です。日付や時刻を扱う場合は、数値として処理するのではなく、専用のAPIを使用することを推奨します。
日付・時刻の解析
Excelでは日付・時刻は数値として保存され、表示形式によって見た目が決まります。
Spire.XLS for Java の getDateTimeValue() を使用すると、Date オブジェクトとして直接取得できます。
CellRange usedRange = sheet.getAllocatedRange();
System.out.println("Date values:");
for (int i = 0; i < usedRange.getRowCount(); i++) {
// 例:G列(日付列)を読み取る
CellRange cell = usedRange.get(String.format("G%d", i + 1));
java.util.Date date = cell.getDateTimeValue();
System.out.println(date);
}
第7列の日付読み取り結果:

getDateTimeValue() は、内部数値を Date オブジェクトへ変換します。レポート処理やデータインポートなどで広く利用されます。
実践的な混在データの解析
実際のExcelファイルでは、1列に文字列・数値・日付・真偽値・空白などが混在することがあります。 その場合、複数のAPIを組み合わせ、業務ロジックに応じて最適な形式を選択します。
CellRange cell = sheet.getRange().get(2, 1); // B2
// 表示されているテキスト
String text = cell.getText();
// 文字列値
String value = cell.getValue();
// 内部値(数値・日付・真偽値など)
Object rawValue = cell.getValue2();
// 数式
String formula = cell.getFormula();
// 数式の計算結果
String evaluated = cell.getEnvalutedValue();
// 数値
double numberValue = cell.getNumberValue();
// 日付
java.util.Date dateValue = cell.getDateTimeValue();
// 真偽値
boolean booleanValue = cell.getBooleanValue();
実務では、表示用途やログ出力には getText() を使用し、計算や条件分岐には getNumberValue() や getDateTimeValue() を利用することが一般的です。
この柔軟な方法は、ユーザー生成ファイルや構造が一定でないExcelにも有効で、堅牢な解析ロジックを実現します。
実務でよくある解析シナリオ
Excelの行をJavaオブジェクトへマッピング
各行をDTOやエンティティクラスにマッピングする方法が一般的です。 例えば、1行を1件のレコードとして扱い、各列をフィールドに対応させます。解析後はListへ格納し、データベース保存や後続処理に利用できます。
Excelデータをコレクションへ読み込む
List<List<Object>> などの構造へ格納する方法もよく使われます。バッチ処理やデータ検証、変換処理に適しています。
Spire.XLS for Java では、行・列の走査が容易で、列の意味に応じた型取得が可能です。
なぜSpire.XLS for Javaを使うのか?
JavaでExcelを解析する際、Spire.XLS for Javaには次の利点があります。
- .xls と .xlsx の両形式に対応
- Microsoft Excel不要
- テキスト・数値・日付を簡単に取得できるAPI
- サーバーサイドおよびデスクトップアプリに対応
これらの特長により、実務プロジェクトでのExcel解析に適した選択肢となります。
データの書き込みについては、JavaでExcelファイルにデータを書き込む方法 をご覧ください。
まとめ
JavaでExcelファイルを解析することは、多くの業務アプリケーションにおいて重要な要件です。単純な文字列取得から、型を考慮した構造化データの抽出まで、目的に応じた方法を選択する必要があります。
Spire.XLS for Java を利用すれば、少ないコードでExcelファイルを読み込み、セル値をテキスト・数値・日付として安全かつ効率的に取得できます。
用途に応じて基本的なテキスト解析と型対応解析を使い分けることで、ExcelデータをJavaアプリケーションへスムーズに統合できます。
すべての機能を制限なく利用するには、無料トライアルライセンス を申請できます。
よくある質問
JavaでXLSとXLSXの両方を解析できますか?
はい。Spire.XLS for Javaは同一APIで .xls と .xlsx の両形式をサポートしています。
テキストとして読む場合と型解析の違いは?
テキスト読み取りは表示形式の値を返します。一方、型解析は数値や日付の本来のデータ型を保持するため、計算やロジック処理に適しています。
Excelをインストールする必要はありますか?
いいえ。Spire.XLS for JavaはMicrosoft Excelに依存しません。






