Travailler avec CSV en TypeScript : bibliothèques et exemples de code

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, plusieurs bibliothèques puissantes sont disponibles pour lire, écrire et transformer des fichiers CSV avec une prise en charge complète des types. Dans cet article, nous examinerons les principaux outils, leur installation et des exemples pratiques.



Bibliothèques populaires pour travailler avec CSV



Les bibliothèques les plus fréquemment utilisées dans l'environnement TypeScript/Node.js :



  • csv-parse — fait partie de l'ensemble csv, un analyseur fiable avec prise en charge des flux
  • papaparse — un analyseur universel pour le navigateur et Node.js
  • csv-stringify — un générateur de CSV à partir de tableaux/objets
  • csvtojson — un convertisseur CSV en JSON avec typage


Installation et configuration



Pour les projets TypeScript, l'installation se fait via npm ou yarn :



npm install csv-parse csv-stringify papaparse @types/papaparse


Si vous utilisez csv-parse, aucun type supplémentaire n'est nécessaire — la bibliothèque dispose d'une prise en charge intégrée de TypeScript.



Exemple 1 : Analyse CSV avec csv-parse



La bibliothèque csv-parse est idéale pour travailler avec de gros fichiers grâce à son API de flux. Voici un exemple de base :



import { parse } from 'csv-parse/sync';import * as fs from 'fs';

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

const csvData = fs.readFileSync('users.csv', 'utf-8');

const records: User[] = parse(csvData, { columns: true, // première ligne = en-têtes skip_empty_lines: true, delimiter: ',', cast: (value, context) => { if (context.column === 'id' || context.column === 'age') { return Number(value); } return value; }});

console.log(records);// [// { id: 1, name: 'Ivan', email: 'ivan@example.com', age: 30 },// { id: 2, name: 'Maria', email: 'maria@example.com', age: 25 }// ]


Exemple 2 : Génération CSV avec typage



Pour créer des fichiers CSV, utilisez csv-stringify. Définissons un type de données et générons une chaîne :



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

interface Product { productId: string; name: string; price: number; inStock: boolean;}

const products: Product[] = [ { productId: 'P001', name: 'Ordinateur portable', price: 75000, inStock: true }, { productId: 'P002', name: 'Souris', price: 1500, inStock: false }, { productId: 'P003', name: 'Clavier', price: 3500, inStock: true }];

const csvOutput = stringify(products, { header: true, columns: ['productId', 'name', 'price', 'inStock']});

console.log(csvOutput);// productId,name,price,inStock// P001,Ordinateur portable,75000,true// P002,Souris,1500,false// P003,Clavier,3500,true


Exemple 3 : Utilisation de PapaParse dans le navigateur



PapaParse est idéal pour le traitement côté client des CSV. Exemple avec chargement de fichier via input :



import Papa from 'papaparse';

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

const fileInput = document.getElementById('csvInput') as HTMLInputElement;

fileInput.addEventListener('change', (event) => { const file = (event.target as HTMLInputElement).files?.[0]; if (!file) return;

Papa.parse<Transaction>(file, { header: true, dynamicTyping: true, // conversion automatique des types skipEmptyLines: true, complete: (result) => { console.log('Analyse terminée :', result.data); // result.data — tableau d'objets Transaction }, error: (error) => { console.error('Erreur d'analyse :', error); } });});


Exemple 4 :

Recommendations