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 Auch in der Bibliothek
Logging in Go (Golang): Best Libraries and Solutions 2024
Moq für C# (.NET): Vollständiger Leitfaden mit Beispielen
Kryptographie in Kotlin: Verschlüsselung und Hashing
Bildverarbeitung in Node.js: resize, crop mit Sharp und Jimp
Kryptographie in C++: Verschlüsselung und Hashes mit OpenSSL und Crypto++