エクセルツール

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

更新済み 2月 23, 2023
共有:

エクセルとは何ですか?

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 最新のZIPファイルをダウンロードしてください。これには、JavaでExcelファイルを読み取るためのJava APIが含まれています。

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ファイルのクラス表現です。

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

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

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

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

    Cellインターフェースは、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.DataSet および System.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
VB   C#

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

IronXLをダウンロード 実際のプロジェクトで今日からご利用いただけます。

< 以前
.NET Regexテスター(開発者向けの仕組み)
次へ >
Excelで列を入れ替える方法

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 977,734 View Licenses >