Travailler avec CSV en TypeScript : bibliothèques, analyse 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 TypeScript : guide complet



CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. Dans l'écosystème TypeScript, il existe plusieurs bibliothèques matures qui permettent d'analyser, générer et transformer efficacement des fichiers CSV avec une prise en charge complète des types. Dans cet article, nous examinerons trois outils principaux : csv-parse, csv-stringify et papaparse, et nous analyserons des exemples pratiques de leur utilisation.



1. Bibliothèque csv-parse : analyse CSV avec typage



csv-parse fait partie de l'écosystème csv.js, l'une des bibliothèques les plus performantes pour l'analyse de CSV. Elle prend en charge les flux (streams), les séparateurs personnalisés et un typage strict via TypeScript.



Installation :

npm install csv-parsenpm install @types/csv-parse  // pour TypeScript (si non inclus automatiquement)


Exemple d'analyse d'une chaîne CSV :

import { parse } from 'csv-parse/sync';import { stringify } from 'csv-stringify/sync';

interface User { id: number; name: string; email: string; age: number;}

const csvData = `id,name,email,age1,Ivan Ivanov,ivan@example.com,302, Maria Petrova,maria@example.com,253,Alexeï Smirnov,alex@example.com,35`;

// Analyse avec indication explicite des typesconst records: User[] = parse(csvData, { columns: true, // première ligne — en-têtes skip_empty_lines: true, delimiter: ',', cast: true // conversion automatique des types (chaînes en nombres)});

console.log(records);// [// { id: 1, name: 'Ivan Ivanov', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'Maria Petrova', email: 'maria@example.com', age: 25 },// { id: 3, name: 'Alexeï Smirnov', email: 'alex@example.com', age: 35 }// ]


2. Bibliothèque csv-stringify : génération CSV à partir d'objets



csv-stringify est une bibliothèque complémentaire pour créer des chaînes et fichiers CSV à partir de tableaux d'objets ou de tuples. Idéale pour l'exportation de données.



Exemple de génération CSV :

import { stringify } from 'csv-stringify/sync';

interface Product { sku: string; price: number; stock: number;}

const products: Product[] = [ { sku: 'PRD-001', price: 1500, stock: 10 }, { sku: 'PRD-002', price: 2500, stock: 5 }, { sku: 'PRD-003', price: 800, stock: 20 },];

const csvOutput = stringify(products, { header: true, columns: ['sku', 'price', 'stock'], // ordre et filtrage des champs});

console.log(csvOutput);// sku,price,stock// PRD-001,1500,10// PRD-002,2500,5// PRD-003,800,20


3. Bibliothèque PapaParse : analyseur universel pour navigateur et Node.js



PapaParse est la bibliothèque la plus populaire pour travailler avec CSV en JavaScript/TypeScript. Elle fonctionne à la fois dans le navigateur et dans Node.js, prend en charge les gros fichiers via des flux, la détection automatique du séparateur et la gestion des erreurs.



Installation :

npm install papaparsenpm install @types/papaparse


Exemple avec traitement de fichier dans Node.js :

import fs from 'fs';import Papa from 'papaparse';

interface Transaction { date: string; amount: number; category: string;}

const fileContent = fs.readFileSync('transactions.csv', 'utf-8');

const result = Papa.parse<Transaction>(fileContent, { header: true, dynamicTyping: true, // conversion automatique des types skipEmptyLines: true,});

if (result.errors.length > 0) { console.error('Erreurs d\'analyse :', result.errors);} else { console.log('Transactions :', result.data); // result.data — tableau d'objets Transaction}

// Analyse asynchrone avec flux pour les gros fichiersconst stream = fs.createReadStream('large-file.csv');Papa.parse(stream,

Recommendations