Arbeiten mit CSV in TypeScript: Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit CSV in TypeScript: vollständige Anleitung



CSV (Comma-Separated Values) ist eines der beliebtesten Formate für den Austausch von Tabellendaten. In TypeScript (und JavaScript) gibt es mehrere leistungsstarke Bibliotheken zum Parsen, Generieren und Verarbeiten von CSV-Dateien. In diesem Artikel betrachten wir die wichtigsten Werkzeuge, ihre Möglichkeiten und geben praktische Beispiele.



Warum Bibliotheken für CSV verwenden?



Die integrierten JavaScript-Methoden (z. B. split(',')) berücksichtigen keine komplexen Fälle:

  • Maskierte Anführungszeichen und Kommas innerhalb von Feldern
  • Verschiedene Trennzeichen (Semikolon, Tabulator)
  • Verschiedene Kodierungen und BOM
  • Mehrzeilige Werte
  • Verschiedene Zeilenendetypen (CRLF, LF)

Professionelle Bibliotheken lösen all diese Probleme und bieten eine benutzerfreundliche API für die Arbeit mit Daten.



1. csv-parse — CSV-Parsing in Node.js und im Browser



csv-parse ist Teil des csv.js-Ökosystems, eine der beliebtesten Bibliotheken zum Parsen. Sie funktioniert sowohl in Node.js als auch im Browser (über einen Bundler).



Installation

npm install csv-parse


Beispiel mit 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, // erste Zeile sind Überschriften skip_empty_lines: true, delimiter: ',', cast: (value, context) => { if (context.column === 'id') return parseInt(value, 10); return value; }});

console.log(records);


2. PapaParse — universeller Parser für Browser und Node.js



PapaParse ist eine Bibliothek mit hervorragender Unterstützung für große Dateien (Streaming-Verarbeitung), automatischer Erkennung des Trennzeichens und umfangreichen Konfigurationsmöglichkeiten.



Installation

npm install papaparse


Beispiel mit Typisierung der Ergebnisse

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, // automatische Typkonvertierung skipEmptyLines: true});

if (result.errors.length > 0) { console.error('Parsing-Fehler:', result.errors);} else { result.data.forEach(product => { console.log(`Produkt ${product.sku}: ${product.price} EUR`); });}


3. csv-stringify — CSV-Generierung aus Daten



Für die umgekehrte Aufgabe — das Erstellen von CSV aus Objekt-Arrays — verwenden Sie csv-stringify. Es gehört ebenfalls zum csv.js-Ökosystem.



Installation

npm install csv-stringify


Beispiel zur CSV-Generierung

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('CSV-Datei erfolgreich erstellt');


4. Fehlerbehandlung und Datenvalidierung



Bei der Arbeit mit CSV ist es wichtig, Fehler korrekt zu behandeln. Betrachten wir ein Beispiel mit Datenprüfung:



import Papa from 'papaparse';

interface ValidatedRow { isValid: boolean; errors: s

Empfehlungen