Passer au contenu du pied de page
OUTILS EXCEL

Comment lire un fichier Excel en Java (Tutoriel)

Qu'est-ce qu'Excel ?

Microsoft Excel Workbook est un logiciel basé sur des feuilles de calcul permettant à ses utilisateurs d'organiser et de stocker des données efficacement. Il stocke et organise des données sous forme de tableau, c'est-à-dire en utilisant des lignes et des colonnes. La cellule dans une feuille de calcul Excel est la case qui contient des données et peut être manipulée avec différents styles, formats et formules.

Comment lire des fichiers Excel en Java ?

Lire un fichier Excel peut parfois être compliqué. Lire des fichiers Excel en Java est également un peu différent de la lecture de fichiers Word en Java à cause des cellules Excel. Le JDK ne fournit pas d'API directe pour lire ou écrire des documents Microsoft Excel. Au lieu de cela, nous devons compter sur la bibliothèque tierce Apache POI.

Bibliothèque Apache POI

POI signifie "Poor Obfuscation Implementation." Apache POI est une bibliothèque Java open source conçue pour lire et écrire des documents Microsoft. Elle offre un moyen de créer et de manipuler divers formats de fichiers basés sur Microsoft Office. En utilisant Apache POI, on devrait être en mesure de créer, modifier, et réaliser des opérations d'affichage/lecture sur une gamme de formats de fichiers Microsoft Office.

Télécharger et installer la bibliothèque Apache POI

Pour commencer, nous allons télécharger la dernière version des fichiers JAR de POI. Allez sur http://poi.apache.org/download.html et téléchargez le dernier fichier ZIP, qui contiendra l'API Java pour lire un fichier Excel en Java.

class="content-img-align-center">
class="center-image-wrapper"> How to Read Excel Files in Java, Figure 1: Download Binary Distribution File

class="content__image-caption">Télécharger les fichiers JAR d'Apache POI

Lorsque vous téléchargez le fichier ZIP, vous devez le décompresser et ajouter les fichiers JAR suivants au classpath de votre projet. Cela est expliqué dans Lecture à partir d'un fichier Excel ci-dessous.

class="content-img-align-center">
class="center-image-wrapper"> How to Read Excel Files in Java, Figure 2: JAR Files

class="content__image-caption">Ajouter les fichiers Jar d'Apache POI au classpath Java

Note : Copiez également les fichiers de lib et ooxml-lib avec les autres fichiers.

Classes et interfaces dans POI

Les formats de fichiers XLS et XLSX pris en charge sont les classes qui peuvent être utilisées :

class="content-img-align-center">
class="center-image-wrapper"> How to Read Excel Files in Java, Figure 3: Apache POI Classes

class="content__image-caption">Classes Apache POI

Voici une liste des différentes interfaces et classes Java dans POI pour lire les fichiers XLS et XLSX en Java :

L'interface Workbook est implémentée par les classes HSSFWorkbook et XSSFWorkbook :

  • HSSFWorkbook : Ceci est une représentation de classe du fichier XLS.
  • XSSFWorkbook : Ceci est une représentation de classe du fichier XLSX.

L'interface Sheet est implémentée par les classes HSSFSheet et XSSFSheet :

  • HSSFSheet : Ceci est une classe représentant une feuille dans un fichier XLS.
  • XSSFSheet : Ceci est une classe représentant une feuille dans un fichier XLSX.

L'interface Row est implémentée par les classes HSSFRow et XSSFRow :

  • HSSFRow : Ceci est une classe représentant une ligne dans la feuille d'un fichier XLS.
  • XSSFRow : Ceci est une classe représentant une ligne dans la feuille d'un fichier XLSX.

L'interface Cell est implémentée par les classes HSSFCell et XSSFCell :

  • HSSFCell : Ceci est une classe représentant une cellule dans une ligne d'un fichier XLS.
  • XSSFCell : Ceci est une classe représentant une cellule dans une ligne d'un fichier XLSX.

Lecture à partir d'un fichier Excel

Pour notre exemple, nous lirons le fichier Excel suivant en Java :

class="content-img-align-center">
class="center-image-wrapper"> How to Read Excel Files in Java, Figure 4: The Excel File to be Read

class="content__image-caption">Le fichier Excel qui sera lu

Étapes pour lire un fichier Excel en Java

  1. Créez un projet Java en utilisant n'importe quel IDE Java. Nous utiliserons Netbeans pour ce projet.
  2. Ensuite, créez un dossier lib dans le projet.
  3. Ensuite, ajoutez les fichiers JAR téléchargés au dossier lib créé à l'étape précédente.
  4. Définissez le Class-Path en cliquant avec le bouton droit sur le dossier Projet > Chemin de construction > Ajouter des fichiers JAR externes > sélectionnez tous les fichiers JAR ci-dessus > Appliquer et fermer.
  5. Maintenant, créons un fichier de classe avec le nom ReadExcelFileDemo.
  6. Créez un fichier Excel avec le nom "studentdata.xls" et écrivez les données ci-dessus ou toutes autres données dedans.

Ci-dessous se trouve un exemple de code pour lire des fichiers Excel en Java :

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 {  
        // Obtain input bytes from a file  
        FileInputStream fis = new FileInputStream(new File("C:\\demo\\studentdata.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) {  
            for (Cell cell : row) {
                switch (formulaEvaluator.evaluateInCell(cell).getCellType()) {  
                    case NUMERIC: // Field that represents numeric cell type  
                        // Getting the value of the cell as a number  
                        System.out.print(cell.getNumericCellValue() + "\t\t");   
                        break;  
                    case STRING: // Field that represents string cell type  
                        // Getting the value of the cell as a string  
                        System.out.print(cell.getStringCellValue() + "\t\t");  
                        break;
                }
            }
            System.out.println();  
        }

        // Closing the workbook to free resources
        wb.close();
    }
}
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 {  
        // Obtain input bytes from a file  
        FileInputStream fis = new FileInputStream(new File("C:\\demo\\studentdata.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) {  
            for (Cell cell : row) {
                switch (formulaEvaluator.evaluateInCell(cell).getCellType()) {  
                    case NUMERIC: // Field that represents numeric cell type  
                        // Getting the value of the cell as a number  
                        System.out.print(cell.getNumericCellValue() + "\t\t");   
                        break;  
                    case STRING: // Field that represents string cell type  
                        // Getting the value of the cell as a string  
                        System.out.print(cell.getStringCellValue() + "\t\t");  
                        break;
                }
            }
            System.out.println();  
        }

        // Closing the workbook to free resources
        wb.close();
    }
}
JAVA

Sortie :

Id    Names
1     Zeeshan
2     Shoaib
3     Umar
4     Rizwan
5     Ahsan
Id    Names
1     Zeeshan
2     Shoaib
3     Umar
4     Rizwan
5     Ahsan
SHELL

Les étapes sont les mêmes pour lire les fichiers XLSX, sauf pour les deux points principaux ci-dessous :

  • Tout d'abord, changez le format du fichier en .xlsx. Le même fichier "studentdata" peut être utilisé, mais avec l'extension .xlsx.
  • Ensuite, il y a une différence dans la façon dont nous importons Java Apache POI. Le code se présente comme suit :
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\\studentdata.xlsx");  
            FileInputStream fis = new FileInputStream(file);  

            // Creating Workbook instance that refers to .xlsx file  
            XSSFWorkbook wb = new XSSFWorkbook(fis);   
            XSSFSheet sheet = wb.getSheetAt(0); 

            // Iterating over rows using iterator
            Iterator<Row> itr = sheet.iterator();
            while (itr.hasNext()) {  
                Row row = itr.next();  

                // Iterating over each column in a row
                Iterator<Cell> cellIterator = row.cellIterator();   
                while (cellIterator.hasNext()) {  
                    Cell cell = cellIterator.next();  
                    switch (cell.getCellType()) {  
                        case NUMERIC: // Field that represents numeric cell type  
                            // Getting the value of the cell as a number  
                            System.out.print(cell.getNumericCellValue() + "\t\t");   
                            break;
                        case STRING: // Field that represents string cell type  
                            // Getting the value of the cell as a string  
                            System.out.print(cell.getStringCellValue() + "\t\t");  
                            break;
                    }
                }
                System.out.println("");  
            }  

            // Closing the workbook to free resources
            wb.close();
        } catch (Exception e) {  
            e.printStackTrace();  
        }
    }
}
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\\studentdata.xlsx");  
            FileInputStream fis = new FileInputStream(file);  

            // Creating Workbook instance that refers to .xlsx file  
            XSSFWorkbook wb = new XSSFWorkbook(fis);   
            XSSFSheet sheet = wb.getSheetAt(0); 

            // Iterating over rows using iterator
            Iterator<Row> itr = sheet.iterator();
            while (itr.hasNext()) {  
                Row row = itr.next();  

                // Iterating over each column in a row
                Iterator<Cell> cellIterator = row.cellIterator();   
                while (cellIterator.hasNext()) {  
                    Cell cell = cellIterator.next();  
                    switch (cell.getCellType()) {  
                        case NUMERIC: // Field that represents numeric cell type  
                            // Getting the value of the cell as a number  
                            System.out.print(cell.getNumericCellValue() + "\t\t");   
                            break;
                        case STRING: // Field that represents string cell type  
                            // Getting the value of the cell as a string  
                            System.out.print(cell.getStringCellValue() + "\t\t");  
                            break;
                    }
                }
                System.out.println("");  
            }  

            // Closing the workbook to free resources
            wb.close();
        } catch (Exception e) {  
            e.printStackTrace();  
        }
    }
}
JAVA

Sortie :

Id    Names
1     Zeeshan
2     Shoaib
3     Umar
4     Rizwan
5     Ahsan
Id    Names
1     Zeeshan
2     Shoaib
3     Umar
4     Rizwan
5     Ahsan
SHELL

La bibliothèque IronXL pour C

IronXL est une bibliothèque .NET autonome qui facilite la lecture et l'édition de documents Microsoft Excel avec C#. Elle ne nécessite pas que Microsoft Excel soit installé, ni ne dépend de l'Interop.

À l'aide d'IronXL, les développeurs peuvent effectuer facilement tous les calculs liés à Excel en écrivant simplement quelques lignes de code et avec des performances rapides. Cela peut être pour des tâches telles que l'addition de deux cellules, le calcul du total général d'une colonne, l'ajout d'une colonne entière à une table Excel, l'ajout d'une ligne entière à une table Excel, les sommes de colonnes en une ou plusieurs lignes, ou de nombreuses autres tâches facilitées grâce aux fonctionnalités utiles d'IronXL.

IronXL prend entièrement en charge le .NET Framework, .NET Core, Mobile, Xamarin, Azure Linux, et macOS.

Ensemble de fonctionnalités d'IronXL

  • Charger, lire et éditer des données à partir de XLS/XLSX/CSV/TSV.
  • Sauvegarder et exporter vers XLS/XLSX/CSV/TSV/JSON.
  • Objets System.Data — travaillez avec des feuilles de calcul Excel comme des objets System.Data.DataSet et System.Data.DataTable.
  • Formules — fonctionne avec les formules Excel.
  • Plages — la syntaxe ["A1:B10"] est facile à utiliser.
  • Tri — trier les lignes, les colonnes et les plages.
  • Style — styles visuels, police et taille de la police, motif d'arrière-plan, bordure, alignement et formats numériques.

Voici un exemple de code pour lire un fichier Excel en C# à l'aide d'IronXL :

using IronXL;
using System.Linq;

public class ExcelReaderExample
{
    public static void Main(string[] args)
    {
        // Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
        WorkBook workbook = WorkBook.Load("test.xlsx");
        WorkSheet sheet = workbook.WorkSheets.First();

        // Select cells easily in Excel notation and return the calculated value
        int cellValue = sheet["A2"].IntValue;

        // Read from Ranges of cells elegantly
        foreach (var cell in sheet["A2:A10"]) {
            Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
        }
    }
}
using IronXL;
using System.Linq;

public class ExcelReaderExample
{
    public static void Main(string[] args)
    {
        // Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
        WorkBook workbook = WorkBook.Load("test.xlsx");
        WorkSheet sheet = workbook.WorkSheets.First();

        // Select cells easily in Excel notation and return the calculated value
        int cellValue = sheet["A2"].IntValue;

        // Read from Ranges of cells elegantly
        foreach (var cell in sheet["A2:A10"]) {
            Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
        }
    }
}
Imports IronXL
Imports System.Linq

Public Class ExcelReaderExample
	Public Shared Sub Main(ByVal args() As String)
		' Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
		Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
		Dim sheet As WorkSheet = workbook.WorkSheets.First()

		' Select cells easily in Excel notation and return the calculated value
		Dim cellValue As Integer = sheet("A2").IntValue

		' Read from Ranges of cells elegantly
		For Each cell In sheet("A2:A10")
			Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
		Next cell
	End Sub
End Class
$vbLabelText   $csharpLabel

Travailler avec IronXL facilite grandement le travail d'un développeur. Son code simple et facile à utiliser rend le logiciel moins sujet aux bogues lors du travail avec des fichiers Excel.

Téléchargez IronXL et utilisez-le avec vos projets dès aujourd'hui.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite