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 (
.xlsund.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.xlsxerforderlich 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