Arbeit mit CSV in TypeScript: Bibliotheken, Parsing und Datengenerierung

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

Arbeit mit CSV in TypeScript: Vollständige Anleitung



CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. Im TypeScript-Ökosystem gibt es mehrere ausgereifte Bibliotheken, die es ermöglichen, CSV-Dateien mit vollständiger Typunterstützung effizient zu parsen, zu generieren und zu transformieren. In diesem Artikel betrachten wir drei Hauptwerkzeuge: csv-parse, csv-stringify und papaparse, und analysieren praktische Anwendungsbeispiele.



1. Die Bibliothek csv-parse: CSV-Parsing mit Typisierung



csv-parse ist Teil des csv.js-Ökosystems, eine der leistungsfähigsten Bibliotheken zum Parsen von CSV. Sie unterstützt Streams, benutzerdefinierte Trennzeichen und eine strenge Typisierung durch TypeScript.



Installation:

npm install csv-parsenpm install @types/csv-parse  // für TypeScript (falls nicht automatisch enthalten)


Beispiel für das Parsen eines CSV-Strings:

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,Alexei Smirnov,alex@example.com,35`;

// Parsing mit expliziter Typangabeconst records: User[] = parse(csvData, { columns: true, // erste Zeile sind die Kopfzeilen skip_empty_lines: true, delimiter: ',', cast: true // automatische Typumwandlung (Strings in Zahlen)});

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: 'Alexei Smirnov', email: 'alex@example.com', age: 35 }// ]


2. Die Bibliothek csv-stringify: CSV-Generierung aus Objekten



csv-stringify ist die Partnerbibliothek zum Erstellen von CSV-Strings und -Dateien aus Arrays von Objekten oder Tupeln. Sie eignet sich hervorragend für den Datenexport.



Beispiel für die CSV-Generierung:

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'], // Reihenfolge und Filterung der Felder});

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


3. Die Bibliothek PapaParse: Universeller Parser für Browser und Node.js



PapaParse ist die beliebteste Bibliothek für die Arbeit mit CSV in JavaScript/TypeScript. Sie funktioniert sowohl im Browser als auch in Node.js, unterstützt große Dateien über Streams, automatische Trennzeichenerkennung und Fehlerbehandlung.



Installation:

npm install papaparsenpm install @types/papaparse


Beispiel mit Dateiverarbeitung in 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, // automatische Typumwandlung skipEmptyLines: true,});

if (result.errors.length > 0) { console.error('Parsing-Fehler:', result.errors);} else { console.log('Transaktionen:', result.data); // result.data — Array von Transaction-Objekten}

// Asynchrones Parsing mit Streams für große Dateienconst stream = fs.createReadStream('large-file.csv');Papa.parse(stream,

Empfehlungen