Arbeiten mit Excel in Kotlin: Überblick über Bibliotheken und praktische Beispiele
Kotlin, als moderne JVM-Sprache, bietet eine hervorragende Kompatibilität mit dem Java-Ökosystem. Für die Arbeit mit Excel-Dateien (.xls und .xlsx) ist die Bibliothek Apache POI die leistungsstärkste und am weitesten verbreitete Lösung. Sie ermöglicht das Erstellen, Lesen und Ändern von Microsoft Office-Dokumenten. In diesem Artikel werden wir uns ansehen, wie man Apache POI in Kotlin verwendet, und auch spezialisierte Kotlin-Wrapper kennenlernen, die den Code vereinfachen.
1. Einbinden von Apache POI in ein Kotlin-Projekt
Fügen Sie die Abhängigkeiten in die Datei build.gradle.kts ein (für Gradle Kotlin DSL):
dependencies { implementation("org.apache.poi:poi:5.2.5") implementation("org.apache.poi:poi-ooxml:5.2.5")}Für Maven verwenden Sie die entsprechenden Artefakte poi und poi-ooxml.
Wichtig:poi-ooxmlwird für die Arbeit mit dem .xlsx-Format (Office Open XML) benötigt, währendpoifür das alte .xls-Format (HSSF) zuständig ist.
2. Erstellen und Schreiben einer Excel-Datei (XLSX) in Kotlin
Erstellen wir eine einfache Arbeitsmappe mit einem Blatt und schreiben Daten hinein.
import org.apache.poi.ss.usermodel.*import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileOutputStream
fun createExcel() { val workbook = XSSFWorkbook() val sheet = workbook.createSheet("Mitarbeiter")
// Überschriften val headerRow = sheet.createRow(0) val headers = listOf("ID", "Name", "Position", "Gehalt") headers.forEachIndexed { index, header -> headerRow.createCell(index).setCellValue(header) }
// Daten val data = listOf( listOf(1, "Ivan Petrov", "Entwickler", 120000.0), listOf(2, "Maria Smirnova", "Analytiker", 95000.0), listOf(3, "Alexei Kuznetsov", "Tester", 85000.0) )
data.forEachIndexed { rowIndex, rowData -> val row = sheet.createRow(rowIndex + 1) rowData.forEachIndexed { colIndex, value -> when (value) { is Int -> row.createCell(colIndex).setCellValue(value.toDouble()) is Double -> row.createCell(colIndex).setCellValue(value) is String -> row.createCell(colIndex).setCellValue(value) } } }
// Automatische Spaltenbreite for (i in headers.indices) { sheet.autoSizeColumn(i) }
// Speichern FileOutputStream("employees.xlsx").use { stream -> workbook.write(stream) } println("Datei erstellt: employees.xlsx")}Wichtige Punkte:
XSSFWorkbook— Klasse für die Arbeit mit .xlsx (XSSF). Für .xls verwenden SieHSSFWorkbook.- Zeilen und Zellen werden ab 0 indiziert.
autoSizeColumnpasst die Spaltenbreite automatisch an den Inhalt an.- In Kotlin ist es praktisch,
usefür das automatische Schließen des Streams zu verwenden.
3. Lesen einer Excel-Datei in Kotlin
Lesen wir die zuvor erstellte Datei und geben die Daten auf der Konsole aus.
import org.apache.poi.ss.usermodel.*import org.apache.poi.xssf.usermodel.XSSFWorkbookimport java.io.FileInputStream
fun readExcel() { FileInputStream("employees.xlsx").use { stream -> val workbook = XSSFWorkbook(stream) val sheet = workbook.getSheetAt(0)
for (row in sheet) { for (cell in row) { when (cell.cellType) { CellType.STRING -> print("${cell.stringCellValue}\\t") CellType.NUMERIC -> print("${cell.numericCellValue}\\t") CellType.BOOLEAN -> print("${cell.booleanCellValue}\\t") else -> print("?\\t") } } println() } }}Beachten Sie die Prü