logo

Ako čítať súbor Excel v jazyku Java

V tejto časti sa naučíme, ako môžeme čítať údaje zo súboru programu Excel.

V jazyku Java nie je čítanie súboru programu Excel podobné čítaniu súboru programu Word kvôli bunkám v súbore programu Excel. JDK neposkytuje priame API na čítanie alebo zápis dokumentov Microsoft Excel alebo Word. Musíme sa spoľahnúť na knižnicu tretej strany, ktorou je Apache POI.

Čo je to Apache POI?

Apache POI (Poor Obfuscation Implementation) je Java API na čítanie a písanie dokumentov Microsoft v oboch formátoch .xls a .xlsx . Obsahuje triedy a rozhrania. Knižnica POI Apache poskytuje dve implementácie na čítanie súborov programu Excel:

    Implementácia HSSF (Horrible SpreadSheet Format):Označuje API, ktoré pracuje s Excelom 2003 alebo staršími verziami.Implementácia XSSF (XML SpreadSheet Format):Označuje API, ktoré pracuje s Excelom 2007 alebo novšími verziami.

Rozhrania a triedy v Apache POI

Rozhrania

    Pracovný zošit:Predstavuje an Pracovný zošit programu Excel . Ide o implementáciu rozhrania od Pracovný zošit HSSF a XSSFWorkbook .Hárok:Je to rozhranie, ktoré predstavuje Pracovný list programu Excel . Hárok je centrálna štruktúra zošita, ktorá predstavuje mriežku buniek. Rozhranie Sheet sa rozširuje java.lang.Iterable .riadok:Je to tiež rozhranie, ktoré predstavuje riadok tabuľky. Rozhranie Row sa rozširuje java.lang.Iterable . Existujú dve konkrétne triedy: HSSFRow a XSSFrow .Bunka:Je to rozhranie. Ide o reprezentáciu na vysokej úrovni a bunka v riadku tabuľky. HSSFCell a XSSFCell implementovať rozhranie bunky.

triedy

XLS triedy

    Pracovný zošit HSSF:Je to trieda reprezentujúca súbor XLS.HSSFS list:Je to trieda predstavujúca hárok v súbore XLS.HSSFRow:Je to trieda predstavujúca riadok v hárku súboru XLS.HSSFCell:Je to trieda reprezentujúca bunku v riadku súboru XLS.

XLSX triedy

    XSSFWorkbook:Je to trieda reprezentujúca súbor XLSX.XSSFHárok:Je to trieda predstavujúca hárok v súbore XLSX.XSSFRow:Je to trieda predstavujúca riadok v hárku súboru XLSX.XSSFCell:Je to trieda reprezentujúca bunku v riadku súboru XLSX.

Kroky na čítanie údajov zo súboru XLS

Krok 1: Vytvorte jednoduchý Java projekt v Eclipse.

Krok 2: Teraz vytvorte priečinok lib v projekte.

Krok 3: Stiahnite si a pridajte nasledujúce súbory jar do priečinka lib:

Krok 4: Nastavte cestu triedy:

Kliknite pravým tlačidlom myši na projekt -> Vytvoriť cestu -> Pridať externé súbory JAR -> vyberte všetky vyššie uvedené súbory jar -> Použiť a zavrieť.

Krok 5: Teraz vytvorte súbor triedy s názvom Prečítajte siExcelFileDemo a do súboru napíšte nasledujúci kód.

stdin v c

Krok 6: Vytvorte excelový súbor s názvom 'student.xls' a zapíšte doň nejaké údaje.


Ako čítať súbor Excel v jazyku Java

Krok 7: Uložte a spustite program.

Príklad čítania excelového súboru (.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ýkon:

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

Čítanie súboru XLSX

Všetky kroky zostanú rovnaké okrem formátu súboru.

Tabuľka: zamestnanec.xslx


Ako čítať súbor Excel v jazyku Java

Príklad čítania excelového súboru (.xlsx)

V tomto príklade používame triedu 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ýkon:

 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 

Čítanie konkrétnej hodnoty bunky zo súboru programu Excel (.xlsx)

Tabuľka: EmployeeData.xlsx


Ako čítať súbor Excel v jazyku Java

Príklad

V nasledujúcom príklade čítame hodnotu 2ndriadok a 2ndstĺpec. Počítanie riadkov a stĺpcov začína od 0. Program teda vráti 'Software Engineer'.


Ako čítať súbor Excel v jazyku Java

 //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ýkon:

 Software Engineer