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 de código



CSV (Comma-Separated Values) es uno de los formatos más populares para el intercambio de datos tabulares. En Kotlin, al igual que en Java, existen varias bibliotecas eficientes para trabajar con archivos CSV. En este artículo, analizaremos en detalle tres enfoques principales: la biblioteca nativa kotlin-csv, la probada OpenCSV y la potente Apache Commons CSV. Aprenderá a analizar sintácticamente, escribir y procesar datos CSV con ejemplos de código.



1. Biblioteca kotlin-csv (Kotlinx.serialization)



kotlin-csv es una biblioteca moderna escrita en Kotlin puro. Se integra perfectamente con kotlinx.serialization, lo que permite mapear automáticamente las filas CSV en clases de datos. Es la mejor opción para proyectos nuevos en Kotlin.



Instalación

Agregue la dependencia en build.gradle.kts:

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


Ejemplo de lectura de 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()

// Opción 1: análisis sintáctico manual val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("Name: ${row[0]}, Age: ${row[1]}, Email: ${row[2]}") }

// Opción 2: con serialización val csv = Csv { ignoreUnknownColumns = true } val users: List<User> = csv.decodeFromString(csvData) users.forEach { println(it) }}


Ejemplo de escritura de 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("Archivo CSV escrito exitosamente.")}


2. Biblioteca OpenCSV



OpenCSV es una biblioteca clásica de Java que funciona muy bien en Kotlin. Proporciona capacidades flexibles de análisis sintáctico, incluyendo manejo de comillas, escape y soporte para diferentes delimitadores.



Instalación

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


Ejemplo de lectura con mapeo a objetos

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

// Análisis sintáctico manual val reader = CSVReaderBuilder(StringReader(csvContent)).build() reader.forEach { line -> println("ID: ${line[0]}, Name: ${line[1]}, Price: ${line[2]}") }

// Mapeo a clase de datos val strategy = HeaderColumnNameMappingStrategy<Product>() strategy.type = Product::class.java val beans = CsvToBeanBuilder<Product>(StringReader(csvContent)) .withMappingStrategy(strategy) .build() .parse() beans.forEach { println(it) }}


Ejemplo de escritura de CSV

import com.opencsv.CSVWriterimport java.io.StringWriter

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

Recommendations