Travailler avec CSV en Kotlin : bibliothèques, analyse et écriture de données

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 : aperçu des bibliothèques et exemples pratiques



CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. En Kotlin, comme en Java, il existe plusieurs bibliothèques matures pour travailler avec CSV. Dans cet article, nous examinerons trois approches principales : la bibliothèque légère kotlin-csv, le puissant OpenCSV et le classique Apache Commons CSV. Vous apprendrez à lire, écrire et traiter des fichiers CSV avec un minimum d'effort.



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



kotlin-csv est une bibliothèque native Kotlin, entièrement écrite en Kotlin sans dépendances aux bibliothèques Java. Elle est idéale pour les projets Kotlin modernes.



Intégration (Gradle)

dependencies {    implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")}


Lecture CSV

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

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

val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("${row[0]} — ${row[1]} ans, ${row[2]}") }}


Écriture CSV

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

fun main() { val data = listOf( listOf("product", "price", "quantity"), listOf("Laptop", "1200", "5"), listOf("Mouse", "25", "50") ) csvWriter().open("inventory.csv") { writeRows(data) } println("Fichier inventory.csv créé")}


2. OpenCSV — une bibliothèque Java éprouvée



OpenCSV est l'une des bibliothèques Java les plus populaires pour travailler avec CSV. Elle fonctionne parfaitement en Kotlin grâce à une compatibilité totale.



Intégration (Gradle)

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


Lecture avec mapping vers une classe

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

data class Person( @field:com.opencsv.bean.CsvBindByName(column = "name") val name: String, @field:com.opencsv.bean.CsvBindByName(column = "age") val age: Int, @field:com.opencsv.bean.CsvBindByName(column = "city") val city: String)

fun main() { val beans = CsvToBeanBuilder<Person>(FileReader("people.csv")) .withType(Person::class.java) .build() .parse()

beans.forEach { println("${it.name} (${it.age}) — ${it.city}") }}


Écriture d'objets

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

fun main() { val people = listOf( Person("Alice", 30, "New York"), Person("Bob", 25, "London") ) val writer = FileWriter("output.csv") val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder(writer).build() beanToCsv.write(people) writer.close() println("Terminé")}


3. Apache Commons CSV — standard industriel



Bibliothèque de la Fondation Apache, prenant en charge divers formats CSV (Excel, MySQL, RFC 4180).



Intégration (Gradle)

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


Lecture avec en-têtes

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

fun main() { val parser = CSVParser.parse( FileReader("data.csv"), CSVFormat.DEFAULT.withFirstRecordAsHeader() ) parser.forEach { record -> val name = record["name"] val age = record["age"] println("$name, âge $age") }}


Écriture avec

Recommendations