Arbeiten mit Excel in Kotlin: Bibliotheken Apache POI und Kotlin-Wrapper

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: Ü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-ooxml wird für die Arbeit mit dem .xlsx-Format (Office Open XML) benötigt, während poi fü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 Sie HSSFWorkbook.
  • Zeilen und Zellen werden ab 0 indiziert.
  • autoSizeColumn passt die Spaltenbreite automatisch an den Inhalt an.
  • In Kotlin ist es praktisch, use fü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ü

Empfehlungen