logo

Cum să citești fișierul Excel în Java

În această secțiune, vom afla cum putem citi datele dintr-un fișier Excel.

În Java, citirea fișierului Excel nu este similară cu citirea fișierului Word din cauza celulelor din fișierul Excel. JDK nu oferă API direct pentru a citi sau scrie document Microsoft Excel sau Word. Trebuie să ne bazăm pe biblioteca terță parte care este Apache POI.

Ce este Apache POI?

Apache POI (Poor Obfuscation Implementation) este un API Java pentru citirea și scrierea documentelor Microsoft în ambele formate .xls și .xlsx . Conține clase și interfețe. Biblioteca Apache POI oferă două implementări pentru citirea fișierelor Excel:

    Implementarea HSSF (Horrible SpreadSheet Format):Indică un API care funcționează cu Excel 2003 sau versiuni anterioare.Implementarea XSSF (format XML SpreadSheet):Indică un API care funcționează cu Excel 2007 sau versiuni ulterioare.

Interfețe și clase în POI Apache

Interfețe

    Caiet de lucru:Reprezintă o Caiet de lucru Excel . Este o interfață implementată de HSSFWorkbook și XSSFWorkbook .Foaie:Este o interfață care reprezintă un Foaia de lucru Excel . O foaie este o structură centrală a unui registru de lucru, care reprezintă o grilă de celule. Interfața Sheet se extinde java.lang.Iterable .Rând:Este, de asemenea, o interfață care reprezintă rând a foii de calcul. Interfața Row se extinde java.lang.Iterable . Există două clase concrete: HSSFRow și XSSFRow .Celula:Este o interfață. Este o reprezentare la nivel înalt a unui celulă într-un rând al foii de calcul. HSSFCell și XSSFCell implementați interfața Cell.

Clase

Clasele XLS

    HSSFWorkbook:Este o clasă care reprezintă fișierul XLS.Foaie HSSFS:Este o clasă care reprezintă foaia într-un fișier XLS.HSSFRow:Este o clasă care reprezintă un rând în foaia fișierului XLS.Celulă HSSFC:Este o clasă care reprezintă o celulă într-un rând de fișier XLS.

Clasele XLSX

mylivecricket in for live cricket
    XSSFWorkbook:Este o clasă care reprezintă fișierul XLSX.XSSFSsheet:Este o clasă care reprezintă foaia într-un fișier XLSX.XSSFRow:Este o clasă care reprezintă un rând în foaia fișierului XLSX.XSSFCell:Este o clasă care reprezintă o celulă într-un rând de fișier XLSX.

Pași pentru a citi datele din fișierul XLS

Pasul 1: Creați un proiect Java simplu în eclipse.

Pasul 2: Acum, creați un folder lib în proiect.

Pasul 3: Descărcați și adăugați următoarele fișiere jar în folderul lib:

Pasul 4: Setați calea clasei:

Faceți clic dreapta pe proiect -> Build Path -> Add External JARs -> selectați toate fișierele jar de mai sus -> Aplicați și închideți.

Pasul 5: Acum creați un fișier de clasă cu numele CitițiExcelFileDemo și scrieți următorul cod în fișier.

Pasul 6: Creați un fișier Excel cu numele „student.xls” și scrieți câteva date în el.


Cum să citești fișierul Excel în Java

Pasul 7: Salvați și rulați programul.

Exemplu de citire a fișierului 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(); } } } 

Ieșire:

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

Citirea fișierului XLSX

Toți pașii vor rămâne aceiași, cu excepția formatului de fișier.

Masa: angajat.xslx


Cum să citești fișierul Excel în Java

Exemplu de fișier Excel citit (.xlsx)

În acest exemplu folosim clasa 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(); } } } 

Ieșire:

 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 

Citirea unei anumite valori a celulei dintr-un fișier Excel (.xlsx)

Masa: EmployeeData.xlsx


Cum să citești fișierul Excel în Java

Exemplu

În exemplul următor, citim valoarea lui 2ndrândul și 2ndcoloană. Numărarea rândurilor și coloanelor începe de la 0. Deci programul returnează „Inginer software”.


Cum să citești fișierul Excel în 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 } } 

Ieșire:

 Software Engineer