Travailler avec CSV dans Node.js : bibliothèques csv-parser et csv-writer

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 dans Node.js : bibliothèques csv-parser et csv-writer



CSV (Comma-Separated Values) est l'un des formats les plus populaires pour stocker et échanger des données tabulaires. Dans l'écosystème Node.js, il existe de nombreux outils pour travailler avec ce format. Dans cet article, nous examinerons deux bibliothèques particulièrement pratiques et légères : csv-parser pour la lecture et csv-writer pour l'écriture de fichiers CSV.



Installation des bibliothèques



Pour commencer, installez les deux bibliothèques via npm :



npm install csv-parser csv-writer


Lecture de fichiers CSV avec csv-parser



La bibliothèque csv-parser transforme les données CSV en un flux d'objets JavaScript. Elle fonctionne sur la base des Node.js Streams, ce qui permet de traiter efficacement même de très gros fichiers sans les charger entièrement en mémoire.



Exemple de lecture de base



Créons un fichier users.csv avec le contenu suivant :



name,age,cityAnna,28,ParisJean,35,LyonMarie,22,Marseille


Lisons-le maintenant avec 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('Enregistrements lus :', results.length); console.log('Premier enregistrement :', results[0]); // Sortie : { name: 'Anna', age: '28', city: 'Paris' } });


Configuration du séparateur et des en-têtes



csv-parser prend en charge divers réglages. Par exemple, si votre CSV utilise le point-virgule comme séparateur :



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


Si le fichier n'a pas d'en-têtes, vous pouvez les spécifier manuellement :



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


Écriture de fichiers CSV avec csv-writer



La bibliothèque csv-writer permet de créer des fichiers CSV à partir de tableaux d'objets. Elle prend en charge différents encodages et séparateurs.



Création d'un fichier CSV simple



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

const csvWriter = createCsvWriter({ path: 'output.csv', header: [ { id: 'name', title: 'Nom' }, { id: 'age', title: 'Âge' }, { id: 'city', title: 'Ville' } ]});

const records = [ { name: 'Anna', age: 28, city: 'Paris' }, { name: 'Jean', age: 35, city: 'Lyon' }, { name: 'Marie', age: 22, city: 'Marseille' }];

csvWriter.writeRecords(records) .then(() => console.log('Fichier CSV créé avec succès'));


Réglages supplémentaires de csv-writer



Vous pouvez modifier le séparateur de champs, ajouter un BOM pour un affichage correct du cyrillique dans Excel et spécifier l'encodage :



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

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


Exemple pratique : conversion JSON en CSV



Il est fréquent de devoir convertir des données JSON au format CSV. Voici un exemple complet :



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

// Données sourcesconst jsonData = [ { id: 1, product: 'Ordinateur portable', price: 75000, quantity: 10 }, { id: 2, product: 'Souris', price: 1500, quantity: 50 }, { id: 3, product: 'Clavier', price: 3500, quantity: 30 }];

// Configuration du rédacteur CSVconst csvWriter = createCsvWriter({ path: 'products.csv', header: [ { id: 'id', title: 'ID' }, { id: 'product

Recommendations