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-parseBeispiel 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 papaparseBeispiel 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-stringifyBeispiel 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 Auch in der Bibliothek
PDF-Berichterstellung mit C# (.NET): iTextSharp, QuestPDF, PDFsharp
Arbeiten mit CSV in C++: Die Bibliothek libcsv und Standardmittel
GraphQL Java: Ein leistungsstarkes Werkzeug zur Erstellung moderner APIs in Java
Swagger/OpenAPI-Generierung für PHP: Die besten Tools und Bibliotheken