Trabalho com CSV em Java: bibliotecas OpenCSV, Apache Commons CSV e Java Scanner

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



CSV (Comma-Separated Values) — um dos formatos mais comuns para troca de dados tabulares. Apesar da aparente simplicidade, o parsing manual de CSV em Java pode levar a erros devido ao escape de aspas, vírgulas aninhadas e diferentes codificações. Neste artigo, veremos três abordagens principais: uso de OpenCSV, Apache Commons CSV e o padrão java.util.Scanner.



1. OpenCSV — biblioteca flexível e popular



OpenCSV — é uma biblioteca leve de código aberto que suporta leitura e escrita de CSV, TSV e outros delimitadores. Ela lida automaticamente com escape, aspas e campos multilinha.



Adicionar dependência (Maven)

<dependency>    <groupId>com.opencsv</groupId>    <artifactId>opencsv</artifactId>    <version>5.9</version></dependency>


Exemplo: ler CSV para uma lista de objetos

import com.opencsv.CSVReader;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.HeaderColumnNameMappingStrategy;import java.io.FileReader;import java.util.List;

public class OpenCSVExample { public static void main(String[] args) throws Exception { try (FileReader reader = new FileReader("users.csv")) { // Parsing manual CSVReader csvReader = new CSVReader(reader); String[] line; while ((line = csvReader.readNext()) != null) { System.out.println("Nome: " + line[0] + ", Email: " + line[1]); } } }}


Exemplo: mapeamento para Java Bean

public class User {    private String name;    private String email;    // getters e setters}

// Leitura com mapeamentotry (FileReader reader = new FileReader("users.csv")) { HeaderColumnNameMappingStrategy<User> strategy = new HeaderColumnNameMappingStrategy<>(); strategy.setType(User.class);

CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withMappingStrategy(strategy) .build();

List<User> users = csvToBean.parse();}


2. Apache Commons CSV — padrão da Apache



Apache Commons CSV — parte do ecossistema Apache Commons. Fornece formatos prontos (RFC 4180, Excel, MySQL) e processamento em fluxo.



Adicionar dependência (Maven)

<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-csv</artifactId>    <version>1.11.0</version></dependency>


Exemplo: leitura com cabeçalhos

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVParser;import org.apache.commons.csv.CSVRecord;import java.io.FileReader;import java.io.Reader;

public class CommonsCSVExample { public static void main(String[] args) throws Exception { try (Reader reader = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(reader)) {

for (CSVRecord record : parser) { String id = record.get("ID"); String value = record.get("Valor"); System.out.println(id + " -> " + value); } } }}


Escrita de CSV

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVPrinter;import java.io.FileWriter;import java.io.Writer;

try (Writer writer = new FileWriter("output.csv"); CSVPrinter printer = CSVFormat.DEFAULT .withHeader("Nome", "Idade") .print(writer)) {

printer.printRecord("Alice", 30); printer.printRecord("Bob", 25);}

Recommendations