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 Codebeispiele



CSV (Comma-Separated Values) ist eines der beliebtesten Formate für den Austausch von Tabellendaten. In Kotlin, wie auch in Java, gibt es mehrere effiziente Bibliotheken für die Arbeit mit CSV-Dateien. In diesem Artikel werden wir drei Hauptansätze im Detail betrachten: die native Bibliothek kotlin-csv, das bewährte OpenCSV und das leistungsstarke Apache Commons CSV. Sie erfahren, wie Sie CSV-Daten mit Codebeispielen parsen, schreiben und verarbeiten.



1. Bibliothek kotlin-csv (Kotlinx.serialization)



kotlin-csv ist eine moderne, in reinem Kotlin geschriebene Bibliothek. Sie lässt sich ideal in kotlinx.serialization integrieren, was eine automatische Zuordnung von CSV-Zeilen zu data-Klassen ermöglicht. Dies ist die beste Wahl für neue Kotlin-Projekte.



Installation

Fügen Sie die Abhängigkeit in build.gradle.kts hinzu:

dependencies {    implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")    implementation("org.jetbrains.kotlinx:kotlinx-serialization-csv:1.6.3")}


Beispiel für das Lesen von CSV

import com.github.doyaaaaaken.kotlincsv.dsl.csvReaderimport kotlinx.serialization.Serializableimport kotlinx.serialization.csv.Csv

@Serializabledata class User(val name: String, val age: Int, val email: String)

fun readCsvWithKotlinCsv() { val csvData = """ name,age,email Alice,30,alice@example.com Bob,25,bob@test.org """.trimIndent()

// Variante 1: Manuelles Parsen val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("Name: ${row[0]}, Alter: ${row[1]}, E-Mail: ${row[2]}") }

// Variante 2: Mit Serialisierung val csv = Csv { ignoreUnknownColumns = true } val users: List<User> = csv.decodeFromString(csvData) users.forEach { println(it) }}


Beispiel für das Schreiben von CSV

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

fun writeCsvWithKotlinCsv() { val data = listOf( listOf("Name", "Alter", "Stadt"), listOf("John", "28", "New York"), listOf("Jane", "32", "London") ) csvWriter().open("output.csv") { writeRows(data) } println("CSV-Datei erfolgreich geschrieben.")}


2. Bibliothek OpenCSV



OpenCSV ist eine klassische Java-Bibliothek, die in Kotlin hervorragend funktioniert. Sie bietet flexible Parsing-Möglichkeiten, einschließlich der Verarbeitung von Anführungszeichen, Escape-Sequenzen und Unterstützung für verschiedene Trennzeichen.



Installation

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


Beispiel für das Lesen mit Mapping in Objekte

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

data class Product(val id: Int, val name: String, val price: Double)

fun readCsvWithOpenCsv() { val csvContent = """ id,name,price 1,Laptop,999.99 2,Maus,25.50 """.trimIndent()

// Manuelles Parsen val reader = CSVReaderBuilder(StringReader(csvContent)).build() reader.forEach { line -> println("ID: ${line[0]}, Name: ${line[1]}, Preis: ${line[2]}") }

// Mapping in data-Klasse val strategy = HeaderColumnNameMappingStrategy<Product>() strategy.type = Product::class.java val beans = CsvToBeanBuilder<Product>(StringReader(csvContent)) .withMappingStrategy(strategy) .build() .parse() beans.forEach { println(it) }}


Beispiel für das Schreiben von CSV

import com.opencsv.CSVWriterimport java.io.StringWriter

fun writeCsvWithOpenCsv() { val stringWriter = StringWriter() val writer = CSVWriter(stringWriter) val

Empfehlungen