エクセルツール

JavaでExcelファイルを読み取る方法(チュートリアル)

リーガン・パン
リーガン・パン
2023年2月23日
共有:

エクセルとは何ですか?

Microsoft Excel Workbookは、ユーザーがデータを効率的に整理し、保存することができるスプレッドシートベースのソフトウェアです。 それはデータを表形式で保存および整理します。つまり、行と列を使用します。 エクセルのスプレッドシート内のセルはデータを保持するボックスであり、さまざまなスタイル、書式設定、および数式で操作できます。

JavaでExcelファイルを読み取る方法は?

Excelファイルを読み取ることは、時には複雑になることがあります。 JavaでのExcelファイルの読み込みは、Excelのセルの特性により、JavaでのWordファイルの読み込みとは少し異なります。 JDKは、Microsoft Excelドキュメントを読み書きするための直接的なAPIを提供していません。 代わりに、サードパーティのライブラリApache POIに依存する必要があります。

アパッチPOIライブラリ

POIは「Poor Obfuscation Implementation」(不完全な難読化実装)の略です。Apache POIは、Microsoftドキュメントの読み書きのために設計されたオープンソースのJavaライブラリです。 これは、Microsoft Office に基づいたさまざまなファイル形式を作成および操作する方法を提供します。Apache POI を使用して、Microsoft Office のさまざまなファイル形式に対して作成、変更、および表示/読み取りの操作を行うことができるはずです。

Apache POIライブラリをダウンロードしてインストールします

まず、最新バージョンのPOI JARファイルをダウンロードします。 http://poi.apache.org/download.html に移動して、ExcelファイルをJavaで読み取るためのJava APIが含まれている最新のZIPファイルをダウンロードしてください。

JavaでExcelファイルを読み取る方法、図1: バイナリ配布ファイルをダウンロード

Apache POI JAR ファイルをダウンロード

ZIPファイルをダウンロードしたら、それを解凍して以下のJARファイルをプロジェクトのクラスパスに追加する必要があります。 これは以下のExcelファイルからの読み取りで説明されています。

JavaでExcelファイルを読み取る方法、図2:JARファイル

Apache POIのJarファイルをJavaのクラスパスに追加する

注意: 他のファイルと一緒にlibとooxml-libのファイルもコピーしてください。

POIのクラスとインターフェース

以下は、使用可能なXLSおよびXLSXファイル形式のサポートクラスです:

How to Read Excel Files in Java, Figure 3: Apache POI クラス

Apache POI クラス

以下は、JavaでXLSおよびXLSXファイルを読み取るためのPOIのさまざまなJavaインターフェースおよびクラスのリストです。

Workbookインターフェースは、HSSFWorkbookクラスとXSSFWorkbookクラスによって実装されています。

  • HSSFWorkbook: これはXLSファイルのクラス表現です。
  • XSSFWorkbook: これはXLSXファイルのクラス表現です。

    SheetインターフェースはHSSFSheetクラスおよびXSSFSheetクラスによって実装されています。

  • HSSFSheet: これは、XLSファイル内のシートを表すクラスです。
  • XSSFSheet: これは、XLSXファイルのシートを表すクラスです。

    RowインターフェースはHSSFRowクラスとXSSFRowクラスによって実装されています。

  • HSSFRow: これはXLSファイルのシート内の行を表すクラスです。
  • XSSFRow: これは、XLSXファイルのシート内の行を表すクラスです。

    HSSFCellクラスとXSSFCellクラスによってセルインターフェイスが実装されています。

  • HSSFCell: これは、XLSファイルの行内のセルを表すクラスです。
  • XSSFCell: これは、XLSXファイルの行内のセルを表すクラスです。

Excelファイルからの読み取り

以下のExcelファイルをJavaで読み取る例を紹介します:

JavaでExcelファイルを読む方法、図4:読み取るExcelファイル

読み取られるExcelファイル

JavaでExcelファイルを読み取る手順

  1. 任意のJava IDEを使用してJavaプロジェクトを作成します。このプロジェクトではNetbeansを使用します。

  2. 次に、プロジェクト内にlibフォルダを作成します。

  3. 次に、前のステップで作成したlibフォルダにダウンロードしたJARファイルを追加します。

  4. プロジェクトフォルダーを右クリック > ビルド・パス > 外部 JAR ファイルを追加 > 上記のすべての JAR ファイルを選択 > 適用して閉じることによって、Class-Path を設定します。

  5. 次に、ReadExcelFileDemo という名前のクラスファイルを作成しましょう。

  6. 「studentdata.xls」という名前のExcelファイルを作成し、そのデータまたは任意のデータを書き込みます。

    以下は、JavaでExcelファイルを読み取るためのコードサンプルです:

import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import org.apache.poi.hssf.usermodel.HSSFSheet;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.FormulaEvaluator;  
import org.apache.poi.ss.usermodel.Row;  

public class ReadExcelFileDemo  {  
    public static void main(String args []) throws IOException  {  
        //obtaining input bytes from a file  
        FileInputStream fis=new FileInputStream(new File("C:\\demo\\studentdata.xls"));  
        //creating workbook instance that refers to .xls file  
        HSSFWorkbook wb=new HSSFWorkbook(fis);   
        //creating a Sheet object to retrieve the object  
        HSSFSheet sheet=wb.getSheetAt(0);  
        //evaluating cell type   
        FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator();  
        for(Row row: sheet) {  
            for(Cell cell: row) {
                switch(formulaEvaluator.evaluateInCell(cell).getCellType()) {  
                    case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type  
                        //getting the value of the cell as a number  
                        System.out.print(cell.getNumericCellValue()+ "\t\t");   
                        break;  
                    case Cell.CELL_TYPE_STRING: //field that represents string cell type  
                        //getting the value of the cell as a string  
                        System.out.print(cell.getStringCellValue()+ "\t\t");  
                        break;
                }
            }
            System.out.println();  
        }
    }
}
JAVA

出力:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

手順はxlsxファイルを読み込む場合と同じですが、以下の2つの主な点が異なります:

  • まず、ファイル形式を.xlsxに変更してください。 同じファイル「studentdata」を使用できますが、「.xlsx」拡張子が必要です。
  • 第二に、JavaのApache POIのインポート方法には違いがあります。 コードは次のようになります:
import java.io.File;  
import java.io.FileInputStream;  
import java.util.Iterator;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.Row;  
import org.apache.poi.xssf.usermodel.XSSFSheet;  
import org.apache.poi.xssf.usermodel.XSSFWorkbook;  

public class XLSXReaderExample  {

    public static void main(String [] args) {  
        try {  
            File file = new File("C:\\demo\\studentdata.xlsx");  
            FileInputStream fis = new FileInputStream(file);  
            //creating Workbook instance that refers to .xlsx file  
            XSSFWorkbook wb = new XSSFWorkbook(fis);   
            XSSFSheet sheet = wb.getSheetAt(0); 
            Iterator<Row> itr = sheet.iterator();
            while (itr.hasNext()) {  
                Row row = itr.next();  
                Iterator<Cell> cellIterator = row.cellIterator();   //iterating over each column  
                while (cellIterator.hasNext()) {  
                    Cell cell = cellIterator.next();  
                    switch (cell.getCellType()) {  
                        case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type  
                            //getting the value of the cell as a number  
                            System.out.print(cell.getNumericCellValue() + "\t\t");   
                            break;
                        case Cell.CELL_TYPE_STRING: //field that represents string cell type  
                            //getting the value of the cell as a string  
                            System.out.print(cell.getStringCellValue() + "\t\t");  
                            break;
                    }
                }
                System.out.println("");  
            }  
        } catch(Exception e) {  
            e.printStackTrace();  
        }
    }
}
JAVA

出力:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

IronXL C# ライブラリ

IronXLは、C#を使用してMicrosoft Excelドキュメントの読み取りと編集を容易にするスタンドアロンの.NETライブラリです。 これは、Microsoft Excelをインストールする必要がなく、またInteropに依存しません。

IronXLを使用すると、開発者は数行のコードを書くだけで、すべてのExcel関連の計算を迅速かつ簡単に実行できます。 これは、2つのセルの追加、列の合計の計算、Excelテーブルへの列全体の追加、Excelテーブルへの行全体の追加、単列および複数行の列の合計などのタスク、またはIronXLの便利な機能によって簡単にできる多くの他のタスクのためである可能性があります。

IronXLは、.NET Framework、.NET Core、Mobile、Xamarin、Azure Linux、およびMacOSを完全にサポートしています。

IronXL フィーチャーセット

  • XLS/XLSX/CSV/TSVファイルからデータを読み込み、読み取り、編集します。
  • XLS/XLSX/CSV/TSV/JSONへの保存およびエクスポート。
  • System.Data オブジェクト — System.Data.DataSetSystem.Data.DataTable オブジェクトとしてExcelスプレッドシートを操作します。
  • 数式 — Excel数式に対応します。
  • 範囲 — 「A1:B10」構文は使いやすいです。
  • 並べ替え — 行、列、範囲を並べ替える。
  • スタイリング — ビジュアルスタイル、フォントとフォントサイズ、背景パターン、境界線、配置、数値フォーマット。

    以下は、IronXLを使用してC#でExcelファイルを読み込むコード例です:

using IronXL;
using System.Linq;

//Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

//Select cells easily in Excel notation and return the calculated value
int cellValue = sheet ["A2"].IntValue;

// Read from Ranges of cells elegantly.
foreach (var cell in sheet ["A2:A10"]) {
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
using IronXL;
using System.Linq;

//Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

//Select cells easily in Excel notation and return the calculated value
int cellValue = sheet ["A2"].IntValue;

// Read from Ranges of cells elegantly.
foreach (var cell in sheet ["A2:A10"]) {
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
Imports IronXL
Imports System.Linq

'Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
Private workbook As WorkBook = WorkBook.Load("test.xlsx")
Private sheet As WorkSheet = workbook.WorkSheets.First()

'Select cells easily in Excel notation and return the calculated value
Private cellValue As Integer = sheet ("A2").IntValue

' Read from Ranges of cells elegantly.
For Each cell In sheet ("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

IronXLを使用すると、開発者の仕事がとても楽になります。 そのシンプルで使いやすいコードにより、Excelファイルを扱う際にバグが発生しにくくなります。

IronXLをダウンロードして、今日からプロジェクトで使用しましょう。

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
< 以前
.NET Regex Testerで正規表現パターンをテストする
次へ >
Excelで列を入れ替える方法