Trabajo con CSV en Kotlin: bibliotecas, análisis y escritura de datos

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: descripción general de bibliotecas y ejemplos prácticos



CSV (Valores Separados por Comas) es uno de los formatos más comunes para el intercambio de datos tabulares. En Kotlin, al igual que en Java, existen varias bibliotecas maduras para trabajar con CSV. En este artículo, veremos tres enfoques principales: la biblioteca ligera kotlin-csv, el potente OpenCSV y el clásico Apache Commons CSV. Aprenderá a leer, escribir y procesar archivos CSV con el mínimo esfuerzo.



1. Biblioteca kotlin-csv (opción recomendada)



kotlin-csv es una biblioteca nativa de Kotlin, escrita completamente en Kotlin sin dependencias de bibliotecas Java. Es ideal para proyectos modernos en Kotlin.



Configuración (Gradle)

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


Lectura de 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]} años, ${row[2]}") }}


Escritura de 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("Archivo inventory.csv creado")}


2. OpenCSV — biblioteca Java probada



OpenCSV es una de las bibliotecas Java más populares para trabajar con CSV. Funciona perfectamente en Kotlin gracias a su total compatibilidad.



Configuración (Gradle)

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


Lectura con mapeo a clase

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


Escritura de objetos

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("Listo")}


3. Apache Commons CSV — estándar industrial



Biblioteca de Apache Foundation que admite varios formatos CSV (Excel, MySQL, RFC 4180).



Configuración (Gradle)

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


Lectura con encabezados

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, edad $age") }}


Escritura con

Recommendations