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 (
.xlset.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.xlsxn’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 Aussi dans la bibliothèque
Apprentissage automatique en C# (.NET) : aperçu des bibliothèques et outils
Travailler avec Apache Kafka en Swift (iOS/macOS) : bibliothèques et exemples
ORM pour Java : comparaison de Hibernate, MyBatis, JPA et Spring Data
Conteneur d'injection de dépendances pour Swift (iOS/macOS) : Swinject
Internationalisation (i18n) en Swift : NSLocalizedString et String Catalog