Trabalhando com CSV em Node.js: bibliotecas csv-parser e csv-writer

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

Trabalhando com CSV em Node.js: bibliotecas csv-parser e csv-writer



CSV (Comma-Separated Values) é um dos formatos mais populares para armazenar e trocar dados tabulares. No ecossistema Node.js, existem muitas ferramentas para trabalhar com este formato. Neste artigo, veremos duas bibliotecas muito convenientes e leves: csv-parser para leitura e csv-writer para escrita de arquivos CSV.



Instalação das bibliotecas



Para começar, instale ambas as bibliotecas via npm:



npm install csv-parser csv-writer


Leitura de arquivos CSV com csv-parser



A biblioteca csv-parser converte dados CSV em um fluxo de objetos JavaScript. Ela funciona com base em Streams do Node.js, permitindo processar eficientemente até mesmo arquivos muito grandes sem carregá-los completamente na memória.



Exemplo básico de leitura



Vamos criar um arquivo users.csv com o seguinte conteúdo:



name,age,cityAna,28,MoscouIvan,35,São PetersburgoMaria,22,Kazan


Agora vamos lê-lo usando csv-parser:



const fs = require('fs');const csv = require('csv-parser');

const results = [];

fs.createReadStream('users.csv') .pipe(csv()) .on('data', (data) => results.push(data)) .on('end', () => { console.log('Registros lidos:', results.length); console.log('Primeiro registro:', results[0]); // Saída: { name: 'Ana', age: '28', city: 'Moscou' } });


Configuração de separador e cabeçalhos



O csv-parser suporta várias configurações. Por exemplo, se seu CSV usar ponto e vírgula como separador:



fs.createReadStream('users.csv')  .pipe(csv({ separator: ';' }))  .on('data', (row) => console.log(row));


Se o arquivo não tiver cabeçalhos, você pode especificá-los manualmente:



fs.createReadStream('data.csv')  .pipe(csv({ headers: ['id', 'product', 'price'] }))  .on('data', (row) => console.log(row));


Escrita de arquivos CSV com csv-writer



A biblioteca csv-writer permite criar arquivos CSV a partir de arrays de objetos. Ela suporta diferentes codificações e separadores.



Criação de um arquivo CSV simples



const createCsvWriter = require('csv-writer').createObjectCsvWriter;

const csvWriter = createCsvWriter({ path: 'output.csv', header: [ { id: 'name', title: 'Nome' }, { id: 'age', title: 'Idade' }, { id: 'city', title: 'Cidade' } ]});

const records = [ { name: 'Ana', age: 28, city: 'Moscou' }, { name: 'Ivan', age: 35, city: 'São Petersburgo' }, { name: 'Maria', age: 22, city: 'Kazan' }];

csvWriter.writeRecords(records) .then(() => console.log('Arquivo CSV criado com sucesso'));


Configurações adicionais do csv-writer



Você pode alterar o separador de campos, adicionar BOM para exibição correta de cirílico no Excel e especificar a codificação:



const createCsvWriter = require('csv-writer').createObjectCsvWriter;

const csvWriter = createCsvWriter({ path: 'output_utf8.csv', header: [ { id: 'name', title: 'Nome' }, { id: 'age', title: 'Idade' } ], fieldDelimiter: ';', alwaysQuote: true, encoding: 'utf8'});


Exemplo prático: conversão de JSON para CSV



Frequentemente surge a tarefa de converter dados JSON para o formato CSV. Aqui está um exemplo completo:



const fs = require('fs');const createCsvWriter = require('csv-writer').createObjectCsvWriter;

// Dados de origemconst jsonData = [ { id: 1, product: 'Notebook', price: 75000, quantity: 10 }, { id: 2, product: 'Mouse', price: 1500, quantity: 50 }, { id: 3, product: 'Teclado', price: 3500, quantity: 30 }];

// Configuração do escritor CSVconst csvWriter = createCsvWriter({ path: 'products.csv', header: [ { id: 'id', title: 'ID' }, { id: 'product

Recommendations