Arbeiten mit Excel in Java: Überblick über Bibliotheken und Codebeispiele
Obwohl PythonLib sich Python widmet, bleibt Java eine der gefragtesten Sprachen in der Unternehmensentwicklung, wo die Arbeit mit Excel-Tabellen eine alltägliche Aufgabe ist. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für die Arbeit mit Excel in Java, ihre Funktionen und geben praktische Codebeispiele.
Warum werden Bibliotheken für Excel in Java benötigt?
Java verfügt über keine integrierten Mittel zum Lesen und Schreiben von Excel-Dateien. Dafür werden externe Bibliotheken verwendet, die Folgendes ermöglichen:
- Erstellen neuer Excel-Arbeitsmappen (XLS- und XLSX-Formate).
- Lesen und Bearbeiten vorhandener Dateien.
- Formatieren von Zellen, Zusammenführen und Festlegen von Stilen.
- Arbeiten mit Formeln, Diagrammen und Makros.
- Exportieren von Daten aus Datenbanken oder anderen Quellen.
Wichtigste Bibliotheken
1. Apache POI
Apache POI ist die beliebteste und leistungsstärkste Bibliothek für die Arbeit mit Microsoft Office-Dateien in Java. Sie unterstützt sowohl das alte XLS-Format (HSSF) als auch das neue XLSX-Format (XSSF).
Vorteile:
- Vollständige Unterstützung aller Excel-Funktionen: Formeln, Stile, bedingte Formatierung, Diagramme.
- Aktive Community und regelmäßige Updates.
- Unterstützung sowohl für Lesen als auch für Schreiben.
Nachteile:
- Hoher Speicherverbrauch bei der Arbeit mit großen Dateien.
- Komplexe API für Anfänger.
2. EasyExcel (Alibaba)
EasyExcel ist eine leichtgewichtige Bibliothek von Alibaba, die für die Arbeit mit großen XLSX-Dateien entwickelt wurde. Sie verwendet eine Streaming-Verarbeitung, was den Speicherverbrauch erheblich reduziert.
Vorteile:
- Minimaler Speicherverbrauch (bis zu 100-mal weniger als POI).
- Einfache und intuitive API.
- Unterstützung von Annotationen für das Daten-Mapping.
Nachteile:
- Unterstützt das alte XLS-Format nicht.
- Eingeschränkte Formatierungsunterstützung.
3. JExcelApi (jxl)
Eine alte Bibliothek, die nur das XLS-Format unterstützt. Geeignet für einfache Aufgaben, wird aber seit langem nicht mehr aktualisiert und funktioniert nicht mit XLSX.
Codebeispiele
Beispiel 1: Lesen einer Excel-Datei mit Apache POI
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;
public class ReadExcel { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("data.xlsx"); Workbook workbook = new XSSFWorkbook(fis)) { Sheet sheet = workbook.getSheetAt(0); 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; } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }}Beispiel 2: Daten in Excel schreiben mit Apache POI
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;
public class WriteExcel { public static void main(String[] args) { try (Workbook workbook = new XSSFWor