Arbeiten mit CSV in Kotlin: Bibliotheken und Codebeispiele

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: Bibliotheken und praktische Beispiele



Das CSV-Format (Comma-Separated Values) bleibt eine der beliebtesten Methoden zum Austausch von Tabellendaten. In der Sprache Kotlin, die aktiv für die Android-Entwicklung, Backend (Ktor, Spring Boot) und Skripte verwendet wird, gibt es mehrere praktische 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.



1. Bibliothek kotlin-csv (empfohlen)



Dies ist eine reine Kotlin-Lösung, die keine zusätzlichen Java-Abhängigkeiten erfordert. Sie ist ideal für Projekte, bei denen Prägnanz und Typsicherheit wichtig sind.



Installation (Gradle)

// build.gradle.ktsimplementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")


CSV lesen

Die Bibliothek unterstützt die automatische Erkennung von Trennzeichen, Escape-Anführungszeichen und Kopfzeilen.

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

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

val rows: List<List<String>> = csvReader().readAll(csvData)

rows.forEach { row -> println("Name: ${row[0]}, Age: ${row[1]}, City: ${row[2]}") }}

// Lesen mit Kopfzeilenfun readWithHeaders() { val data = csvReader().readAllWithHeader(csvData) data.forEach { row -> println("${row["name"]} ist ${row["age"]} Jahre alt") }}


CSV schreiben

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

fun writeCsvExample() { val rows = listOf( listOf("Product", "Price", "Quantity"), listOf("Laptop", "1200", "5"), listOf("Mouse", "25", "50") )

csvWriter().writeAll(rows) // Ausgabe in der Konsole: // Product,Price,Quantity // Laptop,1200,5 // Mouse,25,50}


2. OpenCSV (für komplexe Szenarien)



OpenCSV ist eine ausgereifte Java-Bibliothek, die in Kotlin hervorragend funktioniert. Sie unterstützt Mapping auf data-Klassen, benutzerdefinierte Trennzeichen und die Stream-Verarbeitung großer Dateien.



Installation

implementation("com.opencsv:opencsv:5.9")


Lesen mit Mapping auf data-Klasse

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

data class Person( @CsvBindByName(column = "name") val name: String, @CsvBindByName(column = "age") val age: Int, @CsvBindByName(column = "city") val city: String)

fun readWithOpenCsv() { val csv = """ name,age,city Alice,30,New York Bob,25,London """.trimIndent()

val beans: List<Person> = CsvToBeanBuilder<Person>(StringReader(csv)) .withType(Person::class.java) .build() .parse()

beans.forEach { println(it) } // Person(name=Alice, age=30, city=New York) // Person(name=Bob, age=25, city=London)}


Schreiben mit Kopfzeilen

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

fun writeWithOpenCsv() { val people = listOf( Person("Charlie", 35, "Paris"), Person("Diana", 28, "Tokyo") )

val writer = StringWriter() val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder<Person>(writer) .build() beanToCsv.write(people)

println(writer.toString()) // name,age,city // Charlie,35,Paris // Diana,28,Tokyo}


3. Apache Commons CSV (für Kompatibilität)



Diese Bibliothek ist der De-facto-Standard für Java. Sie bietet eine niedrigschwellige Kontrolle über das Parsen und unterstützt verschiedene Formate (Excel, MySQL, TSV).



Installation

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


CSV lesen mit manueller Iteration

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

fun readWithApacheCsv() { val csv = """ name,age,city Alice,30,New York Bob,25,London """.trimIndent()

val parser = CSVParser(StringReader(csv), CSVFormat.DEFAULT.withFirstRecordAsHeader())

parser.forEach { record -> println("${record.get("name")} wohnt in ${record.get("city")}") }}


CSV schreiben

import org.apache.commons.csv.CSVFormatimport org.apache.commons.csv.CSVPrinterimport java.io.StringWriter

fun writeWithApacheCsv() { val writer = StringWriter() val printer = CSVPrinter(writer, CSVFormat.DEFAULT.withHeader("Name", "Alter", "Stadt"))

printer.printRecord("Eve", 22, "Berlin") printer.printRecord("Frank", 40, "Rom") printer.close()

println(writer.toString()) // Name,Alter,Stadt // Eve,22,Berlin // Frank,40,Rom}


Fazit



Jede der vorgestellten Bibliotheken hat ihre Stärken. kotlin-csv eignet sich am besten für reine Kotlin-Projekte, OpenCSV für komplexe Daten-Mapping-Aufgaben und Apache Commons CSV für maximale Kompatibilität mit Java-Ökosystemen. Wählen Sie die Bibliothek, die am besten zu Ihren Projektanforderungen passt.

Empfehlungen