Arbeiten mit Excel in Kotlin: Bibliotheken Apache POI und Apache POI für Kotlin

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 Kotlin: Bibliotheken Apache POI und Kotlin-Wrapper



Kotlin, als moderne Programmiersprache für die JVM, bietet hervorragende Möglichkeiten zur Automatisierung der Arbeit mit Office-Dokumenten. In diesem Artikel betrachten wir, wie man effektiv mit Excel-Dateien (XLS und XLSX) in Kotlin arbeitet, unter Verwendung der beliebten Bibliotheken Apache POI und ihrem Kotlin-orientierten Wrapper Apache POI for Kotlin.



Warum Kotlin für die Arbeit mit Excel?

Kotlin bietet eine prägnantere und sicherere Syntax im Vergleich zu Java, was besonders bei der Arbeit mit umfangreichen Excel-APIs nützlich ist. Mit Kotlin können Sie:

  • Die Menge an Boilerplate-Code reduzieren
  • Sichere Typen und Null-Safety verwenden
  • Extension-Funktionen zur Verbesserung der Lesbarkeit einsetzen
  • Sich leicht in bestehende Java-Bibliotheken integrieren


Hauptbibliothek: Apache POI

Apache POI ist der De-facto-Standard für die Arbeit mit Microsoft Office-Dokumenten im JVM-Ökosystem. Sie unterstützt:

  • Lesen und Schreiben von XLS (HSSF) und XLSX (XSSF)
  • Arbeit mit Formeln, Stilen, verbundenen Zellen
  • Erstellung von Diagrammen und Pivot-Tabellen
  • Verarbeitung großer Dateien über SXSSF (Streaming)


Für die Einbindung in Gradle (Kotlin DSL) fügen Sie in build.gradle.kts hinzu:

dependencies {    implementation("org.apache.poi:poi:5.3.0")    implementation("org.apache.poi:poi-ooxml:5.3.0")}


Wrapper-Bibliothek: Apache POI for Kotlin

Es gibt mehrere Kotlin-Wrapper, die die Arbeit mit POI vereinfachen. Einer der beliebtesten ist kotlin-poi (com.github.doyaaaaaken:kotlinpoi). Er fügt Extension-Funktionen und einen DSL-Stil zum Erstellen von Excel-Dateien hinzu.

Einbindung:

repositories {    mavenCentral()}

dependencies { implementation("com.github.doyaaaaaken:kotlinpoi:1.0.0")}


Beispiel 1: Erstellen einer einfachen XLSX-Datei (reines POI)

Erstellen wir eine Arbeitsmappe mit einem Blatt und füllen sie mit Daten:

import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileOutputStream

fun createSimpleExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("Daten") // Erstellen der Kopfzeilen val headerRow = sheet.createRow(0) headerRow.createCell(0).setCellValue("Name") headerRow.createCell(1).setCellValue("Alter") headerRow.createCell(2).setCellValue("Stadt") // Daten einfügen val data = listOf( listOf("Anna", 28, "Moskau"), listOf("Ivan", 35, "Sankt Petersburg"), listOf("Maria", 22, "Kasan") ) data.forEachIndexed { index, rowData -> val row = sheet.createRow(index + 1) rowData.forEachIndexed { cellIndex, value -> when (value) { is String -> row.createCell(cellIndex).setCellValue(value) is Int -> row.createCell(cellIndex).setCellValue(value.toDouble()) else -> row.createCell(cellIndex).setCellValue(value.toString()) } } } // Automatische Spaltenbreite for (i in 0..2) { sheet.autoSizeColumn(i) } // Datei speichern FileOutputStream("output.xlsx").use { fileOut -> workbook.write(fileOut) } workbook.close() println("Datei erstellt: output.xlsx")}


Beispiel 2: Lesen einer Excel-Datei (reines POI)

import org.apache.poi.ss.usermodel.WorkbookFactoryimport java.io.FileInputStream

fun readExcel(filePath: String) { val file = FileInputStream(filePath) val workbook = WorkbookFactory.create(file) val sheet = workbook.getSheetAt(0) println("Blatt lesen: ${sheet.sheetName}") println("Gesamtanzahl Zeilen: ${sheet.physicalNumberOfRows}") for (row in sheet) { val r

Empfehlungen