Arbeiten mit CSV in Kotlin: Bibliotheken, Parsing und Datenschreiben

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 CSV in Kotlin: Überblick über Bibliotheken und praktische Beispiele



CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. In Kotlin gibt es, wie auch in Java, mehrere ausgereifte Bibliotheken für die Arbeit mit CSV. In diesem Artikel betrachten wir drei Hauptansätze: die leichte Bibliothek kotlin-csv, das leistungsstarke OpenCSV und das klassische Apache Commons CSV. Sie erfahren, wie Sie CSV-Dateien mit minimalem Aufwand lesen, schreiben und verarbeiten können.



1. Bibliothek kotlin-csv (empfohlene Variante)



kotlin-csv ist eine native Kotlin-Bibliothek, die vollständig in Kotlin ohne Abhängigkeiten von Java-Bibliotheken geschrieben ist. Sie ist ideal für moderne Kotlin-Projekte geeignet.



Einbindung (Gradle)

dependencies {    implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")}


CSV lesen

import com.github.doyaaaaaken.kotlincsv.dsl.csvReader

fun main() { val csvData = """ name,age,city Alice,30,New York Bob,25,London Charlie,35,Tokyo """.trimIndent()

val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("${row[0]} — ${row[1]} Jahre, ${row[2]}") }}


CSV schreiben

import com.github.doyaaaaaken.kotlincsv.dsl.csvWriter

fun main() { val data = listOf( listOf("product", "price", "quantity"), listOf("Laptop", "1200", "5"), listOf("Mouse", "25", "50") ) csvWriter().open("inventory.csv") { writeRows(data) } println("Datei inventory.csv erstellt")}


2. OpenCSV — bewährte Java-Bibliothek



OpenCSV ist eine der beliebtesten Java-Bibliotheken für die Arbeit mit CSV. Sie funktioniert in Kotlin aufgrund der vollständigen Kompatibilität hervorragend.



Einbindung (Gradle)

dependencies {    implementation("com.opencsv:opencsv:5.9")}


Lesen mit Mapping auf eine Klasse

import com.opencsv.bean.CsvToBeanBuilderimport java.io.FileReader

data class Person( @field:com.opencsv.bean.CsvBindByName(column = "name") val name: String, @field:com.opencsv.bean.CsvBindByName(column = "age") val age: Int, @field:com.opencsv.bean.CsvBindByName(column = "city") val city: String)

fun main() { val beans = CsvToBeanBuilder<Person>(FileReader("people.csv")) .withType(Person::class.java) .build() .parse()

beans.forEach { println("${it.name} (${it.age}) — ${it.city}") }}


Objekte schreiben

import com.opencsv.bean.StatefulBeanToCsvimport com.opencsv.bean.StatefulBeanToCsvBuilderimport java.io.FileWriter

fun main() { val people = listOf( Person("Alice", 30, "New York"), Person("Bob", 25, "London") ) val writer = FileWriter("output.csv") val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder(writer).build() beanToCsv.write(people) writer.close() println("Fertig")}


3. Apache Commons CSV — Industriestandard



Bibliothek der Apache Foundation, die verschiedene CSV-Formate unterstützt (Excel, MySQL, RFC 4180).



Einbindung (Gradle)

dependencies {    implementation("org.apache.commons:commons-csv:1.11.0")}


Lesen mit Kopfzeilen

import org.apache.commons.csv.CSVFormatimport org.apache.commons.csv.CSVParserimport java.io.FileReader

fun main() { val parser = CSVParser.parse( FileReader("data.csv"), CSVFormat.DEFAULT.withFirstRecordAsHeader() ) parser.forEach { record -> val name = record["name"] val age = record["age"] println("$name, Alter $age") }}


Schreiben mit

Empfehlungen