Trabalho com CSV em Kotlin: bibliotecas e exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com CSV em Kotlin: bibliotecas e exemplos de código



CSV (Comma-Separated Values) — um dos formatos mais populares para troca de dados tabulares. Em Kotlin, assim como em Java, existem várias bibliotecas eficientes para trabalhar com arquivos CSV. Neste artigo, vamos analisar detalhadamente três abordagens principais: a biblioteca nativa kotlin-csv, a consagrada OpenCSV e a poderosa Apache Commons CSV. Você aprenderá como fazer parsing, escrever e processar dados CSV com exemplos de código.



1. Biblioteca kotlin-csv (Kotlinx.serialization)



kotlin-csv — é uma biblioteca moderna escrita em Kotlin puro. Ela se integra perfeitamente com kotlinx.serialization, permitindo mapear automaticamente linhas CSV para data-classes. É a melhor escolha para novos projetos em Kotlin.



Instalação

Adicione a dependência no build.gradle.kts:

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


Exemplo de leitura 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()

// Opção 1: parsing manual val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("Name: ${row[0]}, Age: ${row[1]}, Email: ${row[2]}") }

// Opção 2: com serialização val csv = Csv { ignoreUnknownColumns = true } val users: List<User> = csv.decodeFromString(csvData) users.forEach { println(it) }}


Exemplo de escrita 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("Arquivo CSV escrito com sucesso.")}


2. Biblioteca OpenCSV



OpenCSV — é uma biblioteca Java clássica que funciona muito bem em Kotlin. Ela oferece recursos flexíveis de parsing, incluindo tratamento de aspas, escape e suporte a diferentes delimitadores.



Instalação

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


Exemplo de leitura com mapeamento para 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()

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

// Mapeamento para data-class val strategy = HeaderColumnNameMappingStrategy<Product>() strategy.type = Product::class.java val beans = CsvToBeanBuilder<Product>(StringReader(csvContent)) .withMappingStrategy(strategy) .build() .parse() beans.forEach { println(it) }}


Exemplo de escrita CSV

import com.opencsv.CSVWriterimport java.io.StringWriter

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

Recommendations