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 Aussi dans la bibliothèque
Client Redis pour Go (Golang) : go-redis et redigo — guide complet
Génération Swagger/OpenAPI pour PHP : meilleurs outils et bibliothèques
Traitement d'images en C++ : bibliothèques CImg, OpenCV et stb_image
Travailler avec YAML dans Node.js : bibliothèques js-yaml et yaml
Traitement des images en PHP : guide complet sur GD et Imagick