logo

Comment lire un fichier Excel en Java

Dans cette section, nous allons apprendre comment lire les données d'un fichier Excel.

En Java, la lecture d'un fichier Excel n'est pas similaire à la lecture d'un fichier Word en raison des cellules du fichier Excel. JDK ne fournit pas d'API directe pour lire ou écrire un document Microsoft Excel ou Word. Nous devons nous appuyer sur la bibliothèque tierce qu'est Apache POI.

Qu’est-ce que le POI Apache ?

POI Apache (Poor Obfuscation Implementation) est une API Java pour lire et écrire des documents Microsoft dans les deux formats .xls et .xlsx . Il contient des classes et des interfaces. La bibliothèque Apache POI propose deux implémentations pour lire les fichiers Excel :

    Implémentation HSSF (Horrible SpreadSheet Format) :Il désigne une API qui fonctionne avec Excel 2003 ou des versions antérieures.Implémentation XSSF (format XML SpreadSheet) :Il désigne une API qui fonctionne avec Excel 2007 ou des versions ultérieures.

Interfaces et classes dans Apache POI

Interfaces

    Cahier d'exercices :Il représente un Classeur Excel . C'est une interface implémentée par Cahier d'exercices HSSF et XSSFClasseur .Feuille:C'est une interface qui représente un Feuille de calcul Excel . Une feuille est une structure centrale d'un classeur, qui représente une grille de cellules. L'interface Sheet s'étend java.lang.Iterable .Rangée:C'est aussi une interface qui représente le rangée de la feuille de calcul. L'interface Row s'étend java.lang.Iterable . Il existe deux classes concrètes : Ligne HSSFR et XSSFLigne .Cellule:C'est une interface. Il s'agit d'une représentation de haut niveau d'un cellule dans une ligne de la feuille de calcul. HSSFCellule et XSSFCellule implémenter l’interface Cell.

Des classes

Cours XLS

    Cahier d'exercices HSSF :C'est une classe représentant le fichier XLS.Feuille HSSF :C'est une classe représentant la feuille dans un fichier XLS.Ligne HSSFR :C'est une classe représentant une ligne dans la feuille du fichier XLS.Cellule HSSFC :C'est une classe représentant une cellule dans une ligne d'un fichier XLS.

Cours XLSX

    Classeur XSSF :C'est une classe représentant le fichier XLSX.Feuille XSSF :C'est une classe représentant la feuille dans un fichier XLSX.Ligne XSSFR :C'est une classe représentant une ligne dans la feuille du fichier XLSX.Cellule XSSF :C'est une classe représentant une cellule dans une ligne d'un fichier XLSX.

Étapes pour lire les données du fichier XLS

Étape 1: Créez un projet Java simple dans Eclipse.

Étape 2: Maintenant, créez un dossier lib dans le projet.

Étape 3: Téléchargez et ajoutez les fichiers jar suivants dans le dossier lib :

Étape 4: Définissez le chemin de classe :

Faites un clic droit sur le projet ->Build Path ->Add External JARs -> sélectionnez tous les fichiers jar ci-dessus -> Appliquer et fermer.

Étape 5 : Créez maintenant un fichier de classe avec le nom ReadExcelFileDemo et écrivez le code suivant dans le fichier.

Étape 6 : Créez un fichier Excel portant le nom « étudiant.xls » et écrivez-y quelques données.


Comment lire un fichier Excel en Java

Étape 7 : Enregistrez et exécutez le programme.

Exemple de lecture d'un fichier 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(); } } } 

Sortir:

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

Lecture du fichier XLSX

Toutes les étapes resteront les mêmes, sauf le format de fichier.

Tableau: employé.xslx


Comment lire un fichier Excel en Java

Exemple de lecture d'un fichier Excel (.xlsx)

Dans cet exemple, nous utilisons la classe XSSFWorkbook.

méthode de comparaison java
 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(); } } } 

Sortir:

 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 

Lecture d'une valeur de cellule particulière à partir d'un fichier Excel (.xlsx)

Tableau: EmployeeData.xlsx


Comment lire un fichier Excel en Java

Exemple

Dans l’exemple suivant, on lit la valeur du 2sdrangée et le 2sdcolonne. Le comptage des lignes et des colonnes commence à 0. Le programme renvoie donc « Ingénieur logiciel ».


Comment lire un fichier Excel en 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 } } 

Sortir:

 Software Engineer