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 de code



CSV (Comma-Separated Values) — l'un des formats les plus populaires pour l'échange de données tabulaires. En Kotlin, comme en Java, il existe plusieurs bibliothèques efficaces pour travailler avec des fichiers CSV. Dans cet article, nous allons détailler trois approches principales : la bibliothèque native kotlin-csv, l'éprouvée OpenCSV et la puissante Apache Commons CSV. Vous apprendrez à analyser, écrire et traiter des données CSV avec des exemples de code.



1. Bibliothèque kotlin-csv (Kotlinx.serialization)



kotlin-csv est une bibliothèque moderne écrite en Kotlin pur. Elle s'intègre parfaitement avec kotlinx.serialization, permettant de mapper automatiquement les lignes CSV vers des classes de données. C'est le meilleur choix pour les nouveaux projets Kotlin.



Installation

Ajoutez la dépendance dans build.gradle.kts :

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


Exemple de lecture 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()

// Option 1 : analyse manuelle val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("Name: ${row[0]}, Age: ${row[1]}, Email: ${row[2]}") }

// Option 2 : avec sérialisation val csv = Csv { ignoreUnknownColumns = true } val users: List<User> = csv.decodeFromString(csvData) users.forEach { println(it) }}


Exemple d'écriture CSV

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

fun writeCsvWithKotlinCsv() { val data = listOf( listOf("Name", "Age", "City"), listOf("John", "28", "New York"), listOf("Jane", "32", "London") ) csvWriter().open("output.csv") { writeRows(data) } println("Fichier CSV écrit avec succès.")}


2. Bibliothèque OpenCSV



OpenCSV est une bibliothèque Java classique qui fonctionne parfaitement en Kotlin. Elle offre des fonctionnalités flexibles d'analyse, incluant la gestion des guillemets, l'échappement et le support de différents séparateurs.



Installation

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


Exemple de lecture avec mapping vers des objets

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,Mouse,25.50 """.trimIndent()

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

// Mapping vers une classe de données val strategy = HeaderColumnNameMappingStrategy<Product>() strategy.type = Product::class.java val beans = CsvToBeanBuilder<Product>(StringReader(csvContent)) .withMappingStrategy(strategy) .build() .parse() beans.forEach { println(it) }}


Exemple d'écriture CSV

import com.opencsv.CSVWriterimport java.io.StringWriter

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

Recommendations