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 am weitesten verbreiteten Formate für den Austausch von Tabellendaten. Im TypeScript-Ökosystem stehen mehrere leistungsstarke Bibliotheken zur Verfügung, mit denen Sie CSV-Dateien mit vollständiger Typunterstützung lesen, schreiben und umwandeln können. In diesem Artikel werden wir die wichtigsten Werkzeuge, ihre Installation und praktische Beispiele behandeln.



Beliebte Bibliotheken für die Arbeit mit CSV



Die am häufigsten verwendeten Bibliotheken in der TypeScript/Node.js-Umgebung:



  • csv-parse — Teil des csv-Pakets, zuverlässiger Parser mit Stream-Unterstützung
  • papaparse — universeller Parser für Browser und Node.js
  • csv-stringify — Generator für CSV aus Arrays/Objekten
  • csvtojson — Konverter von CSV zu JSON mit Typisierung


Installation und Einrichtung



Für TypeScript-Projekte erfolgt die Installation über npm oder yarn:



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


Wenn Sie csv-parse verwenden, sind keine zusätzlichen Typen erforderlich – die Bibliothek bietet integrierte TypeScript-Unterstützung.



Beispiel 1: CSV-Parsing mit csv-parse



Die Bibliothek csv-parse eignet sich dank der Stream-API hervorragend für die Arbeit mit großen Dateien. Betrachten wir ein einfaches Beispiel:



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, // erste Zeile sind Überschriften 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 }// ]


Beispiel 2: CSV-Generierung mit Typisierung



Verwenden Sie csv-stringify zum Erstellen von CSV-Dateien. Definieren wir einen Datentyp und generieren einen String:



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

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

const products: Product[] = [ { productId: 'P001', name: 'Laptop', price: 75000, inStock: true }, { productId: 'P002', name: 'Maus', price: 1500, inStock: false }, { productId: 'P003', name: 'Tastatur', price: 3500, inStock: true }];

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

console.log(csvOutput);// productId,name,price,inStock// P001,Laptop,75000,true// P002,Maus,1500,false// P003,Tastatur,3500,true


Beispiel 3: Verwendung von PapaParse im Browser



PapaParse ist ideal für die clientseitige CSV-Verarbeitung. Beispiel mit Dateiupload über ein Input-Element:



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, // automatische Typkonvertierung skipEmptyLines: true, complete: (result) => { console.log('Parsing abgeschlossen:', result.data); // result.data — Array von Transaction-Objekten }, error: (error) => { console.error('Parsing-Fehler:', error); } });});


Beispiel 4:

Empfehlungen