Trabalho com CSV em Kotlin: bibliotecas, parsing e gravação de dados

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: visão geral das bibliotecas e exemplos práticos



CSV (Comma-Separated Values) — um dos formatos mais comuns para troca de dados tabulares. Em Kotlin, assim como em Java, existem várias bibliotecas maduras para trabalhar com CSV. Neste artigo, abordaremos três abordagens principais: a biblioteca leve kotlin-csv, o poderoso OpenCSV e o clássico Apache Commons CSV. Você aprenderá a ler, escrever e processar arquivos CSV com o mínimo de esforço.



1. Biblioteca kotlin-csv (opção recomendada)



kotlin-csv é uma biblioteca nativa Kotlin, escrita inteiramente em Kotlin sem dependências de bibliotecas Java. Ela é ideal para projetos modernos em Kotlin.



Adicionar dependência (Gradle)

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


Leitura 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]} anos, ${row[2]}") }}


Gravação 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("Arquivo inventory.csv criado")}


2. OpenCSV — biblioteca Java consolidada



OpenCSV é uma das bibliotecas Java mais populares para trabalhar com CSV. Ela funciona perfeitamente em Kotlin devido à total compatibilidade.



Adicionar dependência (Gradle)

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


Leitura com mapeamento para 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}") }}


Gravação 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("Pronto")}


3. Apache Commons CSV — padrão industrial



Biblioteca da Apache Foundation, que suporta vários formatos CSV (Excel, MySQL, RFC 4180).



Adicionar dependência (Gradle)

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


Leitura com cabeçalhos

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


Gravação com

Recommendations