XLParser

 
 

Open‑Source C# Excel‑Formelparser

Excel-Formeln mit hoher Genauigkeit parsen, analysieren und durchlaufen – mittels kompakter Parse‑Bäume über eine Open‑Source C#‑Bibliothek.

Was ist XLParser?

XLParser ist eine hochpräzise C#-Bibliothek zum Parsen von Microsoft Excel-Formeln, die auf dem Irony-Parser-Framework basiert. Sie liefert eine Erfolgsquote von 99,9 % bei über einer Million realer Formeln und ist speziell für die Analyse und Refaktorisierung von Tabellenkalkulationen konzipiert. Ihre kompakte Grammatik – weniger als 100 Token und Produktionsregeln – macht sie leicht verständlich, wartbar oder portierbar in andere Sprachen. XLParser dient als Referenzimplementierung der in dem Papier „A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets“ veröffentlichten Excel-Grammatik und unterstützt die Benchmark-Datensätze Enron und EUSES.

XLParser erzeugt kompakte Parsebäume, die ein effizientes Durchlaufen, Analysieren und Transformieren von Formeln ermöglichen. Entwickler können die Klasse `ExcelFormulaParser` verwenden, um Formeln zu parsen und Funktionsnamen, Referenzen und Teilausdrücke zu extrahieren. Die Klasse `FormulaAnalyzer` unterstützt zudem erweiterte Operationen wie `ParserReferences()`, um alle Zell-, Bereichs- und benannten Referenzen abzurufen. Mit ihrem Fokus auf Forschung und Werkzeuge ist XLParser ideal für Spreadsheet-Qualitätssicherung, Formel-Refactoring und Lernwerkzeuge. Sie können die Online-Demo ausprobieren, über NuGet installieren oder den Quellcode auf [XLParser GitHub](https://github.com/spreadsheetlab/XLParser) bauen.

Previous Next

Erste Schritte mit XLParser

XLParser ist über NuGet verfügbar und kann über die Package Manager Console oder die NuGet‑Benutzeroberfläche von Visual Studio installiert werden. Der einfachste Weg ist, `Install-Package XLParser` in der Package Manager Console auszuführen. Alternativ können Sie die neueste Version von [XLParser GitHub](https://github.com/spreadsheetlab/XLParser) herunterladen, die Lösung bauen und die DLL direkt referenzieren. Die Bibliothek basiert auf dem Irony‑Parser‑Framework und erfordert keine zusätzlichen Abhängigkeiten. Sobald sie installiert ist, können Sie mit der Klasse `ExcelFormulaParser` Excel‑Formeln parsen. Ihre Methode `Parse()` akzeptiert einen Formelausdruck und gibt einen Parse‑Baum für weitere Analysen oder Transformationen zurück.

XLParser über NuGet installieren

Install-Package XLParser

Hochkompatibles Excel-Formel-Parsing

XLParser liefert eine Erfolgsquote von 99,9 % beim Parsen von über einer Million realer Excel-Formeln und ist damit einer der zuverlässigsten C#-Formelparser, die verfügbar sind. Es wurde anhand der weit verbreiteten Enron- und EUSES-Benchmark-Datensätze validiert und ist darauf ausgelegt, komplexe, verschachtelte und reale Formeln zu verarbeiten – einschließlich Array-Ausdrücken, Referenzen und Funktionen. Obwohl XLParser nicht übermäßig restriktiv ist (es kann einige Formeln parsen, die Excel ablehnen würde), ist diese Nachgiebigkeit für Forschungs‑ und Analysezwecke beabsichtigt. Entwickler können XLParser vertrauen, um die überwiegende Mehrheit der in Produktions‑Tabellen vorkommenden Formeln zu parsen, was robuste Formelanalyse, Refactoring und Qualitätssicherungs‑Workflows ermöglicht. Seine kompakte Grammatik sorgt für Wartbarkeit und Portabilität über verschiedene Parser‑Frameworks hinweg.

Eine Excel-Formel parsen und den Parse-Baum inspizieren

using XLParser;

var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());

Alle Verweise aus Excel-Formeln extrahieren

XLParser enthält die Klasse `FormulaAnalyzer`, die leistungsstarke Methoden zur Analyse geparster Formeln bereitstellt. Eine seiner Hauptfunktionen ist `ParserReferences()`, die alle Zell‑, Bereichs‑, benannten Bereichs‑ und horizontalen/vertikalen Verweise zurückgibt, die in einer Formel verwendet werden. Dies ist unverzichtbar für die Verfolgung von Abhängigkeiten, Impact‑Analyse und Refactoring‑Tools. Zum Beispiel, gegeben eine Formel wie `SUM(A1:B10, C12, NamedRange)`, wird `ParserReferences()` eine Liste von `A1:B10`, `C12` und `NamedRange` zurückgeben. Dies ermöglicht Entwicklern, Spreadsheet‑Audit‑Tools zu erstellen, Datenflüsse zu visualisieren oder zirkuläre Abhängigkeiten zu erkennen. Die Methode arbeitet nahtlos mit der kompakten Parse‑Tree‑Struktur und sorgt für schnelle und genaue Extraktion selbst bei großen Formeln.

Alle Referenzen mit FormulaAnalyzer extrahieren

using XLParser;

var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12, NamedRange)");
var analyzer = new FormulaAnalyzer(tree);
var references = analyzer.ParserReferences();
foreach (var refNode in references)
{
    Console.WriteLine(refNode.Print());
}

Parse-Bäume durchlaufen und analysieren

Die Parse‑Bäume von XLParser sind für effizientes Durchlaufen und Analysieren konzipiert. Die Klasse `ExcelFormulaParser` bietet Methoden wie `AllNodes`, um über jeden Knoten im Baum zu iterieren, was benutzerdefinierte Analyse‑, Transformations‑ oder Validierungslogik ermöglicht. Entwickler können Knoten nach Typ filtern (z. B. Funktionen, Referenzen, Operatoren) und Vorgänge wie das Zählen von Funktionsvorkommen, das Erkennen ungenutzter benannter Bereiche oder das Identifizieren potenzieller Fehler ausführen. Die Methode `GetFunction()` vereinfacht das Extrahieren von Funktionsnamen aus Funktionsaufruf‑Knoten, während `Print()` schnelles Debugging oder Logging der Struktur eines beliebigen Knotens erlaubt. Diese Fähigkeiten machen XLParser ideal für den Aufbau von Spreadsheet‑Qualitätswerkzeugen, Refactoring‑Assistenten und edukativen Visualisierungen.

Alle Knoten durchlaufen und Funktionsnamen extrahieren

using XLParser;

var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1, A2) + AVERAGE(B1:B5)");
var functions = tree.AllNodes.Where(n => n.IsFunction());
foreach (var func in functions)
{
    Console.WriteLine($"Function: {func.GetFunction()}");
}

Parse-Bäume debuggen und visualisieren

XLParser integriert sich eng in das GrammarExplorer-Tool von Irony für interaktives Debugging und Baumvisualisierung. Nachdem Sie XLParser und die GrammarExplorer-Lösung gebaut haben, können Sie `XLParser.dll` als Grammatik laden und Formeln in Echtzeit testen. Während der Entwicklung unterstützt der Debugger von Visual Studio das Inspizieren von Parse-Baumknoten über das Überwachungsfenster mit `yournode.Print(),ac`. Diese Funktion beschleunigt das Verständnis komplexer Formeln, das Testen von Randfällen und die Validierung von Grammatikregeln. Die kompakte Baumstruktur stellt sicher, dass selbst tief verschachtelte Formeln lesbar und handhabbar bleiben. Egal, ob Sie ein Spreadsheet-Analysetool bauen oder das Verhalten von Excel-Formeln erforschen, vereinfacht die Debugging‑Unterstützung von XLParser die Entwicklung und Fehlersuche.

Einen Parse-Tree-Knoten im Visual Studio Watch-Fenster debuggen

var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac
 Deutsch