Trabalhando com CSV em JavaScript (Node.js): bibliotecas e exemplos práticos
CSV (Comma-Separated Values) — um dos formatos mais comuns para troca de dados tabulares. No ecossistema Node.js, existem várias bibliotecas maduras que permitem ler, processar e criar arquivos CSV de forma eficiente. Neste artigo, veremos as principais ferramentas, seus recursos e daremos exemplos práticos de código.
Bibliotecas populares para trabalhar com CSV
1. csv-parser — parser de fluxo rápido
Esta biblioteca é o padrão para leitura de CSV em Node.js. Ela opera em modo de fluxo (stream), permitindo processar arquivos de qualquer tamanho sem carregá-los completamente na memória.
Instalação:
npm install csv-parserExemplo de leitura de arquivo CSV:
const fs = require('fs');const csv = require('csv-parser');
const results = [];
fs.createReadStream('data.csv') .pipe(csv()) .on('data', (row) => { results.push(row); }) .on('end', () => { console.log('CSV lido com sucesso'); console.log(results.slice(0, 3)); // Primeiros 3 registros });Principais características:
- Suporte a delimitadores personalizados (padrão é vírgula)
- Detecção automática de cabeçalhos a partir da primeira linha
- Possibilidade de pular linhas vazias
- Baixo consumo de memória devido ao processamento em fluxo
2. csv-stringify — criação de CSV a partir de objetos
Esta ferramenta faz parte da família csv e é destinada à geração de strings ou fluxos CSV a partir de objetos JavaScript.
Instalação:
npm install csv-stringifyExemplo de escrita de dados em CSV:
const { stringify } = require('csv-stringify');const fs = require('fs');
const data = [ { name: 'Ana', age: 28, city: 'Moscou' }, { name: 'Ivan', age: 35, city: 'São Petersburgo' }, { name: 'Olga', age: 22, city: 'Kazan' }];
const writableStream = fs.createWriteStream('output.csv');const stringifier = stringify({ header: true });
stringifier.pipe(writableStream);data.forEach(row => stringifier.write(row));stringifier.end();
console.log('Arquivo output.csv criado');Recursos:
- Escapamento automático de caracteres especiais (aspas, vírgulas)
- Configuração do delimitador de colunas
- Suporte a cabeçalhos personalizados
- Funcionamento em modos síncrono e assíncrono
3. csv-writer — API simples e intuitiva
Esta biblioteca oferece uma interface mais simples para escrever CSV, especialmente se você estiver trabalhando com pequenos volumes de dados.
Instalação:
npm install csv-writerExemplo de escrita:
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({ path: 'users.csv', header: [ { id: 'id', title: 'ID' }, { id: 'name', title: 'Nome' }, { id: 'email', title: 'Email' } ]});
const records = [ { id: 1, name: 'Alexei', email: 'alex@example.com' }, { id: 2, name: 'Maria', email: 'maria@example.com' }];
csvWriter.writeRecords(records) .then(() => console.log('Arquivo CSV criado'));Cenários avançados de uso
Processamento de arquivos grandes com transformação de dados
Vamos combinar leitura e escrita em um único fluxo para processar dados em tempo real:
const fs = require('fs');const csv = require('csv-parser');const { stringify } = require('csv-stringify');
const readStream = fs.createReadStream('input.csv');const writeStream = fs.createWriteStream('output_transformed.csv');const stringifier = stringify({ h Também na biblioteca
Geração de relatórios PDF em JavaScript (Node.js): Puppeteer, PDFKit, jsPDF
Cliente OAuth para Swift (iOS/macOS): biblioteca OAuthSwift
Cliente HTTP para Swift (iOS/macOS): top bibliotecas 2024
Envio de email em Kotlin: bibliotecas e exemplos de código