Arbeiten mit Excel in Java: Apache POI und Alternativen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Excel in Java: Überblick über Bibliotheken und Codebeispiele



Java ist eine der beliebtesten Sprachen für die Unternehmensentwicklung, bei der häufig die Notwendigkeit besteht, mit Microsoft Excel-Tabellen (Formate .xls und .xlsx) zu interagieren. Ob Berichtsexport, Datenimport aus CRM oder Automatisierung der Buchhaltung – ohne ein zuverlässiges Tool für die Arbeit mit Excel kommt man nicht aus. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für Java, ihre Möglichkeiten, Vor- und Nachteile und geben praktische Codebeispiele.



Beliebte Bibliotheken für die Arbeit mit Excel in Java



Heutzutage gibt es mehrere ausgereifte Lösungen. Die Wahl der jeweiligen Bibliothek hängt von der Excel-Version, der Datenmenge und der erforderlichen Funktionalität ab.



  • Apache POI – der De-facto-Standard. Unterstützt beide Formate (.xls und .xlsx), ermöglicht das Lesen, Schreiben, Formatieren von Zellen, Arbeiten mit Formeln, Diagrammen und Makros. Schwergewichtig, aber die leistungsstärkste Bibliothek.
  • JExcelApi (jxl) – eine leichtere Alternative, unterstützt jedoch nur das alte Format .xls. Geeignet für einfache Aufgaben, bei denen keine Unterstützung für .xlsx erforderlich ist.
  • EasyExcel (Alibaba) – eine abgespeckte Version basierend auf POI, optimiert für die Arbeit mit großen Dateien und Stream-Verarbeitung. Hervorragend geeignet für den Import/Export von Millionen von Zeilen.
  • OpenCSV – nicht direkt für Excel, aber für die Arbeit mit CSV (die Excel öffnet). Ideal für den einfachen Austausch von Tabellendaten ohne Formatierung.


Beispiel 1: Lesen einer Excel-Datei mit Apache POI



Betrachten wir ein grundlegendes Szenario: Öffnen der Datei data.xlsx und Ausgabe des Inhalts der ersten Seite auf der Konsole.



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); // erste Seite

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(); } }}


Beispiel 2: Schreiben von Daten in Excel mit Formatierung



Erstellen wir eine neue Datei report.xlsx mit Überschriften und Daten, wobei die Überschriften fett hervorgehoben werden.



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("Bericht");

// Stil für Überschriften CellStyle headerStyle = workbook.createCellStyle(); Font headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setFontHeight

Empfehlungen