Travailler avec CSV en JavaScript (Node.js) : bibliothèques, parsing et génération de données

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec CSV en JavaScript (Node.js) : guide complet



CSV (Comma-Separated Values) est l'un des formats les plus populaires pour l'échange de données tabulaires. Dans l'écosystème Node.js, il existe plusieurs bibliothèques puissantes pour le parsing, la génération et le traitement de fichiers CSV. Dans cet article, nous examinerons les principaux outils, leur installation, des exemples d'utilisation et les meilleures pratiques.



Bibliothèques populaires pour travailler avec CSV en Node.js



En JavaScript (Node.js), trois bibliothèques sont le plus souvent utilisées pour travailler avec CSV :



  • csv-parser — un parseur stream rapide fonctionnant en mode streaming
  • csv-stringify — un générateur de CSV à partir d'objets ou de tableaux JavaScript
  • fast-csv — une bibliothèque universelle combinant parsing et génération


Installation des bibliothèques



Pour installer les paquets nécessaires, utilisez npm :



npm install csv-parser csv-stringify fast-csv


Parsing CSV avec csv-parser



La bibliothèque csv-parser fonctionne en mode stream, ce qui permet de traiter des fichiers de toute taille sans les charger entièrement en mémoire.



Exemple : 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('Fichier CSV traité avec succès'); console.log('Première ligne :', results[0]); });


Par défaut, csv-parser utilise la première ligne du fichier comme en-têtes et retourne des objets avec les clés correspondantes.



Génération CSV avec csv-stringify



La bibliothèque csv-stringify permet de créer des chaînes CSV à partir de tableaux ou d'objets JavaScript.



Exemple : création de CSV à partir d'objets



const { stringify } = require('csv-stringify');const fs = require('fs');

const data = [ { name: 'Иван', age: 25, city: 'Москва' }, { name: 'Мария', age: 30, city: 'Санкт-Петербург' }, { name: 'Алексей', age: 28, city: 'Казань' }];

const writableStream = fs.createWriteStream('output.csv');

const stringifier = stringify({ header: true, columns: ['name', 'age', 'city']});

stringifier.pipe(writableStream);data.forEach(row => stringifier.write(row));stringifier.end();


Solution universelle : fast-csv



fast-csv fournit à la fois le parsing et la génération de CSV, et prend en charge différents formats (TSV, séparateurs personnalisés).



Exemple : parsing CSV avec fast-csv



const fs = require('fs');const csv = require('@fast-csv/parse');

const rows = [];

fs.createReadStream('data.csv') .pipe(csv.parse({ headers: true })) .on('error', error => console.error(error)) .on('data', row => rows.push(row)) .on('end', (rowCount) => { console.log(`${rowCount} lignes traitées`); console.log('Données :', rows); });


Exemple : écriture CSV avec fast-csv



const fs = require('fs');const csv = require('@fast-csv/format');

const data = [ ['Имя', 'Возраст', 'Город'], ['Иван', '25', 'Москва'], ['Мария', '30', 'Санкт-Петербург']];

const ws = fs.createWriteStream('output.csv');csv.write(data, { headers: true }).pipe(ws);


Traitement des gros fichiers et performance



Lorsque vous travaillez avec des fichiers CSV de plus de 100 Mo, il est recommandé d'utiliser un traitement en flux. Les trois bibliothèques examinées prennent en charge les streams.



Exemple : traitement d'un gros CSV ligne par ligne



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

let rowCount = 0;

fs.createReadStream('large-file.csv') .pipe(csv()) .on('data', (row) => { rowC

Recommendations