このセクションでは、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 つの実装を提供します。
Apache POIのインターフェースとクラス
インターフェース
クラス
XLSクラス
XLSXクラス
XLS ファイルからデータを読み取る手順
ステップ1: Eclipse で単純な Java プロジェクトを作成します。
ステップ2: 次に、プロジェクト内に lib フォルダーを作成します。
ステップ 3: 次の jar ファイルをダウンロードして、lib フォルダーに追加します。
- commons-collections4-4.1.jar ここをクリック
- poi-3.17.jar ここをクリック
- poi-ooxml-3.17.jar ここをクリック
- poi-ooxml-schemas-3.17.jar ここをクリック
- xmlbeans-2.6.0.jar ここをクリック
ステップ 4: クラスパスを設定します。
プロジェクトを右クリック -> ビルド パス -> 外部 JAR の追加 -> 上記のすべての JAR ファイルを選択 -> 適用して閉じます。
ステップ5: 次に、次の名前のクラスファイルを作成します。 Excelファイルデモを読む そして、次のコードをファイルに記述します。
関係です
ステップ6: 「student.xls」という名前の 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
読み込んだ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の中央の画像
例
次の例では、2 の値を読み取ります。nd行と2ndカラム。行と列のカウントは 0 から始まります。そのため、プログラムは「Software Engineer」を返します。
//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