logo

Jak číst soubor Excel v Javě

V této části se naučíme, jak můžeme číst data ze souboru aplikace Excel.

V Javě není čtení excelového souboru podobné čtení wordového souboru kvůli buňkám v excelovém souboru. JDK neposkytuje přímé API pro čtení nebo zápis dokumentů Microsoft Excel nebo Word. Musíme se spolehnout na knihovnu třetí strany, kterou je Apache POI.

Co je Apache POI?

Apache POI (Poor Obfuscation Implementation) je Java API pro čtení a psaní dokumentů Microsoft v obou formátech .xls a .xlsx . Obsahuje třídy a rozhraní. Knihovna POI Apache poskytuje dvě implementace pro čtení souborů aplikace Excel:

    Implementace HSSF (Horrible SpreadSheet Format):Označuje rozhraní API, které pracuje s aplikací Excel 2003 nebo staršími verzemi.Implementace XSSF (XML SpreadSheet Format):Označuje rozhraní API, které pracuje s aplikací Excel 2007 nebo novějšími verzemi.

Rozhraní a třídy v Apache POI

Rozhraní

    Pracovní sešit:Představuje an Excelový sešit . Jedná se o implementaci rozhraní od Pracovní sešit HSSF a XSSFWorkbook .Prostěradlo:Je to rozhraní, které představuje Excelový list . List je centrální struktura sešitu, která představuje mřížku buněk. Rozhraní Sheet se rozšiřuje java.lang.Iterable .Řádek:Je to také rozhraní, které představuje řádek tabulky. Rozhraní Row se rozšiřuje java.lang.Iterable . Existují dvě konkrétní třídy: HSSFRow a XSSFRow .Buňka:Je to rozhraní. Jedná se o reprezentaci a buňka v řádku tabulky. HSSFCell a XSSFCell implementovat rozhraní Cell.

Třídy

XLS třídy

    Pracovní sešit HSSF:Je to třída reprezentující soubor XLS.HSSFS list:Je to třída představující list v souboru XLS.HSSFRow:Je to třída představující řádek v listu souboru XLS.HSSFCell:Je to třída představující buňku v řadě XLS souboru.

XLSX třídy

    XSSFWorkbook:Je to třída představující soubor XLSX.XSSFlist:Je to třída představující list v souboru XLSX.XSSFRow:Je to třída představující řádek v listu souboru XLSX.XSSFCell:Je to třída představující buňku v řádku souboru XLSX.

Kroky ke čtení dat ze souboru XLS

Krok 1: Vytvořte jednoduchý Java projekt v Eclipse.

Krok 2: Nyní vytvořte v projektu složku lib.

Krok 3: Stáhněte a přidejte následující soubory jar do složky lib:

Krok 4: Nastavte cestu třídy:

imessage hry na android

Klikněte pravým tlačítkem na projekt ->Cesta sestavení ->Přidat externí soubory JAR -> vyberte všechny výše uvedené soubory jar -> Použít a zavřít.

Krok 5: Nyní vytvořte soubor třídy s názvem Přečtěte siExcelFileDemo a do souboru napište následující kód.

Krok 6: Vytvořte excelový soubor s názvem 'student.xls' a zapište do něj nějaká data.


Jak číst soubor Excel v Javě

Krok 7: Uložte a spusťte program.

typy testování

Příklad čtení excelového souboru (.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(); } } } 

Výstup:

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

Čtení souboru XLSX

Všechny kroky zůstanou stejné kromě formátu souboru.

Stůl: zaměstnanec.xslx


Jak číst soubor Excel v Javě

Příklad čteného excelového souboru (.xlsx)

V tomto příkladu používáme třídu 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(); } } } 

Výstup:

 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 

Čtení konkrétní hodnoty buňky ze souboru aplikace Excel (.xlsx)

Stůl: EmployeeData.xlsx


Jak číst soubor Excel v Javě

Příklad

V následujícím příkladu čteme hodnotu 2ndřada a 2ndsloupec. Počítání řádků a sloupců začíná od 0. Program tedy vrátí 'Software Engineer'.


Jak číst soubor Excel v Javě

 //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 } } 

Výstup:

 Software Engineer