Bibliothek / SDK
productdevbook/hucre avatar
productdevbook/hucre

hucre: eine abhängigkeitsfreie Tabellenkalkulations-Engine in TypeScript

Projektüberblick: Tabellenkalkulations-Engine ohne Abhängigkeiten. Lesen und schreiben Sie XLSX, CSV, ODS. Reines TypeScript, funktioniert überall.

2.177 Sterne67 ForksTypeScriptMIT

Auf einen Blick

Was ist das?
XLSX, CSV, ODS, JSON, NDJSON und XML aus einem einzigen TypeScript-Paket ohne Laufzeitabhängigkeiten lesen und schreiben.
Für wen ist es gedacht?
hucre wird unter der MIT-Lizenz veröffentlicht. Die Lizenz erlaubt freie Nutzung, Modifikation und Verbreitung, enthält jedoch keine Gewährleistung oder Supportpflichten.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 4 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 17. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Keine Abhängigkeiten und modulare Imports

hucre ist eine in reinem TypeScript geschriebene Tabellenkalkulations-Engine. Das README beschreibt sie als abhängigkeitsfrei, das heißt, das Paket selbst zieht keine Drittanbieter-Bibliotheken ein. Importe können auf Unterpfade wie hucre/xlsx oder hucre/csv beschränkt werden, sodass ein Projekt nur den Code bündelt, den es tatsächlich verwendet. Das README enthält gemessene Bundlegrößen für einige Importkombinationen: Nur CSV parsen und schreiben ergibt etwa 2,3 KB (gzip), nur XLSX lesen etwa 32 KB, und das gesamte Paket etwa 114 KB. Diese Zahlen stammen aus eigenen Tests des Projekts und sind keine unabhängigen Benchmarks. Im selben Abschnitt wird behauptet, dass der Code in Node, Deno, Bun, Cloudflare Workers und Browsern läuft, aber das README bietet keine Testmatrix, die diese Aussage stützt.

Arbeitsmappen lesen und schreiben

Die Kern-API bietet readXlsx und writeXlsx für XLSX sowie eine einheitliche read-Funktion, die XLSX, XLSB, XLS und ODS automatisch erkennt. Leseoptionen erlauben es, Blätter nach Index, Name oder einem Prädikat basierend auf Sichtbarkeit zu filtern, Stilparsing zu aktivieren und ein Datumssystem zu wählen. Die Schreibseite akzeptiert ein Blattmodell mit Spalten, Zeilen und Datenobjekten. Das README listet eine lange Reihe unterstützter Funktionen auf: Zellstile, verbundene Zellen, eingefrorene und geteilte Fenster, Autofilter, Datenvalidierung, Hyperlinks, Bilder, Kommentare, Tabellen, bedingte Formatierung, benannte Bereiche, Druckeinstellungen, Seitenumbrüche, Blattschutz, Rich-Text, gemeinsame und Array-Formeln, Sparklines, Textfelder, Hintergrundbilder, Zahlenformate, ausgeblendete Blätter, native Checkboxen für Excel 2024 sowie Export nach HTML, Markdown, JSON und TSV. Dies sind Behauptungen aus dem README; das Repository enthält keinen separaten Konformitätsbericht.

Streaming großer Dateien

Für große Arbeitsmappen bietet hucre streamXlsxRows zum Lesen sowie writeXlsxStream und XlsxStreamWriter zum Schreiben. Der Streaming-Reader parst das ZIP-Archiv von vorne nach hinten und kann direkt einen ReadableStream akzeptieren; er fällt nur dann auf Pufferung zurück, wenn das Archivlayout eine einläufige Verarbeitung verhindert. Der Streaming-Writer gibt Bytes aus, während Zeilen aus einem Iterable gezogen werden, sodass der Speicherspitzenwert flach bleibt. Das README enthält Messungen aus einem Node-24-Test mit fünf gemischten Spalten: Bei 300.000 Zeilen erreichte writeXlsxStream einen Spitzenheap von 41 MB, während XlsxStreamWriter 328 MB erreichte; bei einer Million Zeilen waren es 67 MB gegenüber 1.037 MB; bei drei Millionen Zeilen galt der gepufferte Writer als nicht praktikabel. Das README weist auch darauf hin, dass Zeichenfolgen standardmäßig inline geschrieben werden, ZIP64-Einträge standardmäßig deaktiviert sind und die Komprimierung auf dem CompressionStream der Plattform beruht; ohne diesen werden Teile unkomprimiert gespeichert.

Round-Trip-Erhalt und Legacy-Formate

Das README unterscheidet zwei Wege: openXlsx und saveXlsx kopieren jeden Teil, den hucre nicht neu erzeugt, bytegenau, sodass Diagramme, VBA-Makros und andere nicht modellierte Inhalte eine Bearbeitung überleben. Im Gegensatz dazu baut das Paar readXlsx/writeXlsx die Arbeitsmappe aus einem Modell neu auf, und nur das, was dieses Modell beschreibt, kommt heraus. Das ist wichtig beim Bearbeiten makroaktivierter Dateien, denn readXlsx/writeXlsx erhält vbaProject.bin nicht. Die Bibliothek kann auch ältere XLS- und XLSB-Dateien lesen, aber nur für Blattnamen, Zellwerte und verbundene Bereiche. Formeln erscheinen als zwischengespeicherte Werte, nicht als Formeltext; Stile, Spaltenbreiten, Zeilenhöhen, Sichtbarkeit, benannte Bereiche und Arbeitsmappeneigenschaften werden ignoriert. Das README sagt, dass eine Konvertierung aus diesen Formaten daher eine Umwandlung von Werten und Blattnamen ist, keine originalgetreue Kopie.

ODS-Unterstützung mit bewusst schmalem Modell

ODS-Reader und -Writer modellieren denselben begrenzten Funktionsumfang, daher ist eine ODS-Datei, die gelesen und zurückgeschrieben wird, verlustfrei. Das Problem tritt bei der Konvertierung von XLSX zu ODS auf: Werte, Formeln, verbundene Zellen und sechs Zellstil-Aspekte (fett, kursiv, Schriftgröße, Schriftfarbe, Hintergrundfarbe, Zahlenformat) bleiben erhalten, während Rahmen, Ausrichtung, Spaltenbreiten, eingefrorene Bereiche, Validierung, benannte Bereiche, Bilder und Seiteneinrichtung stillschweigend verworfen werden. Der Reader öffnet nur content.xml und meta.xml, nicht styles.xml oder settings.xml. Eine mit LibreOffice erstellte Datei mit benannten Stilen wird daher nur mit direkter Formatierung zurückgelesen. Das README präsentiert dies als aktuellen Vertrag und merkt an, dass die Erweiterung des ODS-Modells offene Arbeit ist.

Diagramme, Pivot-Tabellen und andere Arbeitsmappen-Interna

hucre behandelt mehrere interne Teile einer Arbeitsmappe, die die meisten Bibliotheken vermeiden. Diagramme machen eine Runde durch ein Chart-Objekt auf der Leseseite, ein SheetChart auf der Schreibseite und einen cloneChart-Helfer, der typisierte Überschreibungen anwendet. Die Schreibseite erstellt nur sieben Diagrammtypen (Säule, Balken, Linie, Kreis, Ring, Punkt, Fläche) und wirft bei anderen eine Ausnahme, während die Leseseite auch Kombinationsdiagramme und weitere Typen parsen kann. Pivot-Tabellen können gelesen und strukturell erstellt werden, aber der Writer gibt nur den Cache und das Layout aus, ohne vorberechnete Wertzellen; Excel berechnet sie beim ersten Öffnen. Slicer, Zeitachsenfilter, externe Arbeitsmappenverweise und WPS-Zellbilder werden in typisierte Modelle eingelesen und beim Speichern neu deklariert, sodass sie die Runde überleben. Die Neu-Erzeugung einiger dieser Teile wird jedoch noch als Folgearbeit aufgeführt.

Einheitliche API, CLI und Hilfsfunktionen

Das Paket enthält auch höherwertige Helfer: read und write erkennen das Format automatisch, readObjects und writeObjects konvertieren zwischen Tabellen und Objektarrays mit Kopfzeilen. Eine CLI ist über npx hucre verfügbar, mit convert-, inspect- und validate-Befehlen. Das README zeigt, dass convert XLSX, ODS, CSV, TSV, XLS und XLSB als Eingabe akzeptiert und die ersten vier schreibt, da XLS und XLSB nur lesbar sind. Zu den In-Memory-Blattoperationen gehören insertRows, deleteRows, cloneSheet und moveSheet. Es gibt Funktionen für HTML- und Markdown-Export, einen fromHtml-Parser zum Lesen von Tabellen, einen Zahlenformat-Renderer, Zellreferenz-Utilities und einen flüssigen WorkbookBuilder. Das README betont, dass Markdown- und HTML-Export einseitig sind, es kein fromMarkdown gibt und fromHtml nicht die Umkehrung von toHtml ist.

Redaktionelles Fazit

hucre wird unter der MIT-Lizenz veröffentlicht. Die Lizenz erlaubt freie Nutzung, Modifikation und Verbreitung, enthält jedoch keine Gewährleistung oder Supportpflichten. Die README enthält keine Aussagen zu Produktionssupport, Sicherheitsaudits oder langfristigen Wartungsplänen.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen