logo

Com llegir un fitxer Excel a Java

En aquesta secció, aprendrem com podem llegir dades d'un fitxer Excel.

A Java, llegir un fitxer Excel no és similar a llegir un fitxer Word a causa de les cel·les del fitxer Excel. JDK no proporciona API directe per llegir o escriure documents de Microsoft Excel o Word. Hem de confiar en la biblioteca de tercers que és Apache POI.

Què és Apache POI?

PDI d'Apache (Poor Offuscation Implementation) és una API de Java per llegir i escriure documents de Microsoft en ambdós formats .xls i .xlsx . Conté classes i interfícies. La biblioteca Apache POI proporciona dues implementacions per llegir fitxers Excel:

com actualitzar java
    Implementació de HSSF (Horrible SpreadSheet Format):Indica una API que funciona amb Excel 2003 o versions anteriors.Implementació de XSSF (format de full de càlcul XML):Indica una API que funciona amb Excel 2007 o versions posteriors.

Interfícies i classes a Apache POI

Interfícies

    Quadern de treball:Representa un Quadern de treball Excel . És una interfície implementada per Quadern de treball HSSF i XSSFWorkbook .Full:És una interfície que representa un Full de treball Excel . Un full és una estructura central d'un llibre de treball, que representa una quadrícula de cel·les. La interfície de Full s'estén java.lang.Iterable .Fila:També és una interfície que representa el fila del full de càlcul. La interfície Row s'estén java.lang.Iterable . Hi ha dues classes concretes: HSSFRow i XSSFRow .Cel·la:És una interfície. És una representació d'alt nivell d'a cel·la en una fila del full de càlcul. HSSFCell i XSSFCell implementar la interfície Cell.

Classes

Classes XLS

    Quadern de treball HSSF:És una classe que representa el fitxer XLS.Full HSSFS:És una classe que representa el full en un fitxer XLS.HSSFRow:És una classe que representa una fila al full del fitxer XLS.HSSFCell:És una classe que representa una cel·la en una fila d'arxius XLS.

Classes XLSX

    XSSFWorkbook:És una classe que representa el fitxer XLSX.Full XSSFS:És una classe que representa el full en un fitxer XLSX.XSSFRow:És una classe que representa una fila al full del fitxer XLSX.XSSFCell:És una classe que representa una cel·la en una fila del fitxer XLSX.

Passos per llegir dades del fitxer XLS

Pas 1: Creeu un projecte Java senzill a eclipse.

Pas 2: Ara, creeu una carpeta lib al projecte.

Pas 3: Baixeu i afegiu els fitxers jar següents a la carpeta lib:

Pas 4: Estableix el camí de classe:

Feu clic amb el botó dret al projecte -> Camí de construcció -> Afegeix JAR externs -> seleccioneu tots els fitxers jar anteriors -> Aplicar i tancar.

fons css

Pas 5: Ara creeu un fitxer de classe amb el nom Llegeix ExcelFileDemo i escriviu el codi següent al fitxer.

Pas 6: Creeu un fitxer Excel amb el nom 'student.xls' i escriviu-hi algunes dades.


Com llegir un fitxer Excel a Java

Pas 7: Deseu i executeu el programa.

Exemple de lectura de fitxers d'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(); } } } 

Sortida:

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

Llegint el fitxer XLSX

Tots els passos seguiran sent els mateixos, excepte el format de fitxer.

Taula: empleat.xslx

hola món amb java

Com llegir un fitxer Excel a Java

Exemple de fitxer Excel de lectura (.xlsx)

En aquest exemple fem servir la classe XSSFWorkbook.

java com anul·lar
 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(); } } } 

Sortida:

 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 

Llegir un valor de cel·la particular d'un fitxer Excel (.xlsx)

Taula: EmployeeData.xlsx


Com llegir un fitxer Excel a Java

Exemple

En l'exemple següent, llegim el valor de 2ndfila i el 2ndcolumna. El recompte de files i columnes comença des de 0. Així que el programa torna 'Enginyer de programari'.


Com llegir un fitxer Excel a 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 } } 

Sortida:

 Software Engineer