Travailler avec Excel en Java : Apache POI et alternatives

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Excel en Java : aperçu des bibliothèques et exemples de code



Java est l’un des langages les plus populaires pour le développement d’entreprise, où il est souvent nécessaire d’interagir avec des tableurs Microsoft Excel (formats .xls et .xlsx). Qu’il s’agisse d’exporter des rapports, d’importer des données depuis un CRM ou d’automatiser des rapports comptables, un outil fiable pour travailler avec Excel est indispensable. Dans cet article, nous examinerons les principales bibliothèques pour Java, leurs fonctionnalités, avantages et inconvénients, et fournirons des exemples pratiques de code.



Bibliothèques populaires pour travailler avec Excel en Java



Aujourd’hui, il existe plusieurs solutions matures. Le choix d’une bibliothèque spécifique dépend de la version d’Excel, du volume de données et des fonctionnalités requises.



  • Apache POI — la référence de facto. Prend en charge les deux formats (.xls et .xlsx), permet de lire, écrire, formater des cellules, travailler avec des formules, graphiques et macros. Lourde, mais la plus puissante.
  • JExcelApi (jxl) — une alternative plus légère, mais ne prend en charge que l’ancien format .xls. Convient pour des tâches simples où le support du .xlsx n’est pas nécessaire.
  • EasyExcel (Alibaba) — une version allégée basée sur POI, optimisée pour les gros fichiers et le traitement par flux. Idéale pour l’import/export de millions de lignes.
  • OpenCSV — pas directement pour Excel, mais pour travailler avec CSV (que Excel ouvre). Parfait pour un échange simple de données tabulaires sans mise en forme.


Exemple 1 : Lecture d’un fichier Excel avec Apache POI



Considérons un scénario de base : ouvrir le fichier data.xlsx et afficher le contenu de la première feuille dans la console.



import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;

public class ReadExcelExample { public static void main(String[] args) { String filePath = "data.xlsx";

try (FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new XSSFWorkbook(fis)) {

Sheet sheet = workbook.getSheetAt(0); // première feuille

for (Row row : sheet) { for (Cell cell : row) { switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\\t"); break; default: System.out.print("?\\t"); } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }}


Exemple 2 : Écrire des données dans Excel avec mise en forme



Créons un nouveau fichier report.xlsx avec des en-têtes et des données, en mettant les en-têtes en gras.



import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;

public class WriteExcelExample { public static void main(String[] args) { try (Workbook workbook = new XSSFWorkbook()) { Sheet sheet = workbook.createSheet("Rapport");

// Style pour les en-têtes CellStyle headerStyle = workbook.createCellStyle(); Font headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setFontHeight

Recommendations