Travailler avec CSV en JavaScript (Node.js) : bibliothèques et exemples pratiques
CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. Dans l'écosystème Node.js, il existe plusieurs bibliothèques matures qui permettent de lire, traiter et créer efficacement des fichiers CSV. Dans cet article, nous examinerons les principaux outils, leurs fonctionnalités et fournirons des exemples de code pratiques.
Bibliothèques populaires pour travailler avec CSV
1. csv-parser — analyseur rapide en flux
Cette bibliothèque est la norme pour la lecture de CSV en Node.js. Elle fonctionne en mode flux (stream), ce qui permet de traiter des fichiers de toute taille sans les charger entièrement en mémoire.
Installation :
npm install csv-parserExemple de lecture d'un fichier 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 lu avec succès'); console.log(results.slice(0, 3)); // Les 3 premiers enregistrements });Caractéristiques clés :
- Prise en charge des séparateurs personnalisés (par défaut la virgule)
- Détection automatique des en-têtes à partir de la première ligne
- Possibilité d'ignorer les lignes vides
- Faible consommation mémoire grâce au traitement en flux
2. csv-stringify — création de CSV à partir d'objets
Cet outil fait partie de la famille csv et est conçu pour générer des chaînes ou des flux CSV à partir d'objets JavaScript.
Installation :
npm install csv-stringifyExemple d'écriture de données en CSV :
const { stringify } = require('csv-stringify');const fs = require('fs');
const data = [ { name: 'Anna', age: 28, city: 'Moscou' }, { name: 'Ivan', age: 35, city: 'Saint-Pétersbourg' }, { 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('Fichier output.csv créé');Fonctionnalités :
- Échappement automatique des caractères spéciaux (guillemets, virgules)
- Configuration du séparateur de colonnes
- Prise en charge des en-têtes personnalisés
- Fonctionnement en modes synchrone et asynchrone
3. csv-writer — API simple et intuitive
Cette bibliothèque offre une interface plus simple pour l'écriture de CSV, surtout si vous travaillez avec de petits volumes de données.
Installation :
npm install csv-writerExemple d'écriture :
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({ path: 'users.csv', header: [ { id: 'id', title: 'ID' }, { id: 'name', title: 'Nom' }, { 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('Fichier CSV créé'));Scénarios d'utilisation avancés
Traitement de gros fichiers avec transformation de données
Combinons la lecture et l'écriture dans un même flux pour traiter les données à la volée :
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 Aussi dans la bibliothèque
Files d'attente de tâches pour Rust : Aperçu des bibliothèques et outils populaires
JavaMail (Jakarta Mail) Java : guide complet avec exemples
Générateur de QR codes en Kotlin : bibliothèque ZXing et conseils d'implémentation
Configuration des applications Go (Golang) : bibliothèques et outils
Client HTTP pour Go (Golang) : top bibliothèques pour travailler avec HTTP