Travailler avec CSV en Kotlin : bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec CSV en Kotlin : bibliothèques et exemples pratiques



Le format CSV (Comma-Separated Values) reste l'un des moyens les plus populaires d'échanger des données tabulaires. En langage Kotlin, qui est activement utilisé pour le développement Android, le backend (Ktor, Spring Boot) et les scripts, il existe plusieurs bibliothèques pratiques pour travailler avec CSV. Dans cet article, nous allons examiner trois approches principales : la bibliothèque légère kotlin-csv, la puissante OpenCSV et la classique Apache Commons CSV.



1. Bibliothèque kotlin-csv (recommandée)



Il s'agit d'une solution purement Kotlin qui ne nécessite pas de dépendances Java supplémentaires. Elle est idéale pour les projets où la concision et la sécurité des types sont importantes.



Installation (Gradle)

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


Lecture CSV

La bibliothèque prend en charge la détection automatique du délimiteur, l'échappement des guillemets et les en-têtes.

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]}") }}

// Lecture avec en-têtesfun readWithHeaders() { val data = csvReader().readAllWithHeader(csvData) data.forEach { row -> println("${row["name"]} is ${row["age"]} years old") }}


Écriture CSV

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) // Sortie console : // Product,Price,Quantity // Laptop,1200,5 // Mouse,25,50}


2. OpenCSV (pour les scénarios complexes)



OpenCSV est une bibliothèque Java mature qui fonctionne parfaitement en Kotlin. Elle prend en charge le mappage vers des classes de données, les délimiteurs personnalisés et le traitement en flux des fichiers volumineux.



Installation

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


Lecture avec mappage vers une classe de données

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)}


Écriture avec en-têtes

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 (pour la compatibilité)



Cette bibliothèque est la norme de facto pour Java. Elle offre un contrôle de bas niveau sur l'analyse et prend en charge différents formats (Excel, MySQL, TSV).



Inst

Recommendations