Trabajo con CSV en Kotlin: bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con CSV en Kotlin: bibliotecas y ejemplos prácticos



El formato CSV (Comma-Separated Values) sigue siendo una de las formas más populares de intercambiar datos tabulares. En el lenguaje Kotlin, que se utiliza activamente para el desarrollo de Android, backend (Ktor, Spring Boot) y scripts, existen varias bibliotecas convenientes para trabajar con CSV. En este artículo, analizaremos tres enfoques principales: la biblioteca ligera kotlin-csv, el potente OpenCSV y el clásico Apache Commons CSV.



1. Biblioteca kotlin-csv (recomendada)



Esta es una solución puramente Kotlin que no requiere dependencias adicionales de Java. Es ideal para proyectos donde la concisión y la seguridad de tipos son importantes.



Instalación (Gradle)

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


Lectura de CSV

La biblioteca admite la detección automática del delimitador, escape de comillas y encabezados.

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

// Lectura con encabezadosfun readWithHeaders() { val data = csvReader().readAllWithHeader(csvData) data.forEach { row -> println("${row["name"]} is ${row["age"]} years old") }}


Escritura de 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) // Salida en consola: // Product,Price,Quantity // Laptop,1200,5 // Mouse,25,50}


2. OpenCSV (para escenarios complejos)



OpenCSV es una biblioteca Java madura que funciona muy bien en Kotlin. Admite mapeo a data-classes, delimitadores personalizados y procesamiento en flujo de archivos grandes.



Instalación

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


Lectura con mapeo a data-class

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


Escritura con encabezados

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 (para compatibilidad)



Esta biblioteca es el estándar de facto para Java. Proporciona control de bajo nivel sobre el análisis y admite varios formatos (Excel, MySQL, TSV).



Insta

Recommendations