logo

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

このセクションでは、Excel ファイルからデータを読み取る方法を学習します。

10mlってどのくらいですか

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

Apache POI とは何ですか?

アパッチPOI (貧弱な難読化実装) は、Microsoft ドキュメントを両方の形式で読み書きするための Java API .xls そして .xlsx 。クラスとインターフェイスが含まれています。 Apache POI ライブラリは、Excel ファイルを読み取るための 2 つの実装を提供します。

    HSSF (恐ろしいスプレッドシート形式) の実装:Excel 2003 以前のバージョンで動作する API を示します。XSSF (XML スプレッドシート形式) の実装:Excel 2007 以降のバージョンで動作する API を指します。

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

インターフェース

    ワークブック:それは、 Excelワークブック 。によって実装されたインターフェイスです HSSFワークブック そして XSSFワークブック 。シート:を表すインターフェースです。 Excelワークシート 。シートはワークブックの中心的な構造であり、セルのグリッドを表します。 Sheetインターフェースの拡張 java.lang.Iterable 。行:を表すインターフェースでもあります。 スプレッドシートの。 Rowインターフェースの拡張 java.lang.Iterable 。次の 2 つの具体的なクラスがあります。 HSSFRow そして XSSFロウ 。細胞:それはインターフェースです。これは、 細胞 スプレッドシートの行に。 HSSFCell そして XSSFセル Cellインターフェースを実装します。

クラス

XLSクラス

    HSSFワークブック:XLSファイルを表すクラスです。HSSFシート:XLS ファイル内のシートを表すクラスです。HSSFRow:XLSファイルのシート内の行を表すクラスです。HSSFCell:XLSファイルの行内のセルを表すクラスです。

XLSXクラス

    XSSFワークブック:XLSXファイルを表すクラスです。XSSFシート:これは、XLSX ファイル内のシートを表すクラスです。XSSF行:XLSXファイルのシート内の行を表すクラスです。XSSFセル:XLSXファイルの行内のセルを表すクラスです。

XLS ファイルからデータを読み取る手順

ステップ1: Eclipse で単純な Java プロジェクトを作成します。

ステップ2: 次に、プロジェクト内に lib フォルダーを作成します。

ステップ 3: 次の jar ファイルをダウンロードして、lib フォルダーに追加します。

ステップ 4: クラスパスを設定します。

プロジェクトを右クリック -> ビルド パス -> 外部 JAR の追加 -> 上記のすべての JAR ファイルを選択 -> 適用して閉じます。

ステップ5: 次に、次の名前のクラスファイルを作成します。 Excelファイルデモを読む そして、次のコードをファイルに記述します。

関係です

ステップ6: 「student.xls」という名前の Excel ファイルを作成し、そこにデータを書き込みます。


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

ステップ7: プログラムを保存して実行します。

Excelファイル(.xls)ファイルの読み込み例

 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\student.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) //iteration over row using for each loop { for(Cell cell: row) //iteration over cell using for each loop { 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()+ '		'); 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()+ '		'); break; } } System.out.println(); } } } 

出力:

 Name Age Height Swarit 23.0 5' Puneet 25.0 6'1' Swastik 22.0 5'5' Tejas 12.0 4'9' 

XLSXファイルの読み込み

ファイル形式を除いて、すべての手順は同じままです。

テーブル: 従業員.xslx


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

読み込んだExcelファイル(.xlsx)の例

この例では、XSSFWorkbook クラスを使用します。

 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\employee.xlsx'); //creating a new file instance FileInputStream fis = new FileInputStream(file); //obtaining bytes from the file //creating Workbook instance that refers to .xlsx file XSSFWorkbook wb = new XSSFWorkbook(fis); XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object Iterator itr = sheet.iterator(); //iterating over excel file while (itr.hasNext()) { Row row = itr.next(); Iterator cellIterator = row.cellIterator(); //iterating over each column while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: //field that represents string cell type System.out.print(cell.getStringCellValue() + '			'); break; case Cell.CELL_TYPE_NUMERIC: //field that represents number cell type System.out.print(cell.getNumericCellValue() + '			'); break; default: } } System.out.println(''); } } catch(Exception e) { e.printStackTrace(); } } } 

出力:

 Employee ID Employee Name Salary Designation Department 1223.0 Harsh 20000.0 Marketing Manager Marketing 3213.0 Vivek 15000.0 Financial Advisor Finance 6542.0 Krishna 21000.0 HR Manager HR 9213.0 Sarika 34000.0 Sales Manager Sales 

Excel ファイル (.xlsx) から特定のセル値を読み取る

テーブル: 従業員データ.xlsx

CSSの中央の画像

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

次の例では、2 の値を読み取ります。nd行と2ndカラム。行と列のカウントは 0 から始まります。そのため、プログラムは「Software Engineer」を返します。


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

 //reading value of a particular cell import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadCellExample { public static void main(String[] args) { ReadCellExample rc=new ReadCellExample(); //object of the class //reading the value of 2nd row and 2nd column String vOutput=rc.ReadCellData(2, 2); System.out.println(vOutput); } //method defined for reading a cell public String ReadCellData(int vRow, int vColumn) { String value=null; //variable for storing the cell value Workbook wb=null; //initialize Workbook null try { //reading data from a file in the form of bytes FileInputStream fis=new FileInputStream('C:\demo\EmployeeData.xlsx'); //constructs an XSSFWorkbook object, by buffering the whole stream into the memory wb=new XSSFWorkbook(fis); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } Sheet sheet=wb.getSheetAt(0); //getting the XSSFSheet object at given index Row row=sheet.getRow(vRow); //returns the logical row Cell cell=row.getCell(vColumn); //getting the cell representing the given column value=cell.getStringCellValue(); //getting cell value return value; //returns the cell value } } 

出力:

 Software Engineer