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 populaires pour l'échange de données tabulaires. En TypeScript (et JavaScript), 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, leurs fonctionnalités et fournirons des exemples pratiques.



Pourquoi utiliser des bibliothèques pour CSV ?



Les outils intégrés de JavaScript (par exemple, split(',')) ne prennent pas en compte les cas complexes :

  • Guillemets échappés et virgules à l'intérieur des champs
  • Séparateurs différents (point-virgule, tabulation)
  • Encodages différents et BOM
  • Valeurs multilignes
  • Différents types de fins de ligne (CRLF, LF)

Les bibliothèques professionnelles résolvent tous ces problèmes et fournissent une API pratique pour travailler avec les données.



1. csv-parse — parsing CSV dans Node.js et le navigateur



csv-parse fait partie de l'écosystème csv.js, l'une des bibliothèques de parsing les plus populaires. Elle fonctionne à la fois dans Node.js et dans le navigateur (via un bundler).



Installation

npm install csv-parse


Exemple d'utilisation avec TypeScript

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

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

const csvData = 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') return parseInt(value, 10); return value; }});

console.log(records);


2. PapaParse — parseur universel pour navigateur et Node.js



PapaParse est une bibliothèque avec un excellent support des fichiers volumineux (traitement par flux), une détection automatique du séparateur et de nombreuses options de configuration.



Installation

npm install papaparse


Exemple avec typage des résultats

import Papa from 'papaparse';

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

const csvString = `sku,price,quantityABC-001,29.99,100ABC-002,49.50,50`;

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

if (result.errors.length > 0) { console.error('Erreurs de parsing :', result.errors);} else { result.data.forEach(product => { console.log(`Produit ${product.sku} : ${product.price} €`); });}


3. csv-stringify — génération de CSV à partir de données



Pour la tâche inverse — créer un CSV à partir de tableaux d'objets — utilisez csv-stringify. Il fait également partie de l'écosystème csv.js.



Installation

npm install csv-stringify


Exemple de génération de CSV

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

interface Order { orderId: number; customer: string; total: number;}

const orders: Order[] = [ { orderId: 1001, customer: 'Ivan Petrov', total: 1500.50 }, { orderId: 1002, customer: 'Maria Sidorova', total: 2300.00 }, { orderId: 1003, customer: 'Alexei Ivanov', total: 890.75 }];

const csvOutput = stringify(orders, { header: true, columns: ['orderId', 'customer', 'total']});

writeFileSync('orders.csv', csvOutput, 'utf-8');console.log('Fichier CSV créé avec succès');


4. Gestion des erreurs et validation des données



Lors du travail avec CSV, il est important de gérer correctement les erreurs. Voici un exemple avec vérification des données :



import Papa from 'papaparse';

interface ValidatedRow { isValid: boolean; errors: s

Recommendations