
XLParser
Open source C# Excel-formule parser
Parse, analyseer en doorloop Excel-formules met hoge nauwkeurigheid met behulp van compacte parse-bomen via een open source C#-bibliotheek.
Wat is XLParser?
XLParser is een zeer nauwkeurige C#-bibliotheek voor het parseren van Microsoft Excel-formules, gebouwd op het Irony-parserframework. Het levert een succesratio van 99,9 % op meer dan een miljoen formules uit de praktijk en is specifiek ontworpen voor spreadsheet‑analyse en refactoring. De compacte grammatica—minder dan 100 tokens en productieregels—maakt het gemakkelijk te begrijpen, te onderhouden of te porteren naar andere talen. XLParser dient als de referentie‑implementatie van de Excel‑grammatica die gepubliceerd is in het artikel “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” en ondersteunt de Enron- en EUSES‑benchmarkdatasets.
XLParser produceert compacte parse-bomen, waardoor efficiënte traversering, analyse en transformatie van formules mogelijk is. Ontwikkelaars kunnen de `ExcelFormulaParser`-klasse gebruiken om formules te parseren en functienamen, referenties en subexpressies te extraheren. De `FormulaAnalyzer`-klasse ondersteunt bovendien geavanceerde bewerkingen zoals `ParserReferences()` om alle cel-, bereik- en benoemde referenties op te halen. Met de focus op onderzoek en tooling is XLParser ideaal voor spreadsheetkwaliteitsborging, formule‑refactoring en educatieve tools. Je kunt de online demo proberen, installeren via NuGet, of bouwen vanuit de bron op [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).
Aan de slag met XLParser
XLParser is beschikbaar via NuGet en kan worden geïnstalleerd met behulp van de Package Manager Console of de NuGet UI van Visual Studio. De eenvoudigste manier is om `Install-Package XLParser` uit te voeren in de Package Manager Console. Als alternatief kun je de nieuwste release downloaden van [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), de oplossing bouwen en de DLL direct refereren. De bibliotheek is gebouwd op het Irony parser-framework en vereist geen extra afhankelijkheden. Na installatie kun je beginnen met het parseren van Excel-formules met behulp van de `ExcelFormulaParser`-klasse. De `Parse()`-methode accepteert een formule‑string en retourneert een parse‑boom voor verdere analyse of transformatie.
Installeer XLParser via NuGet
Install-Package XLParserHoge compatibiliteit bij het parseren van Excel-formules
XLParser levert een succesvolle parse‑snelheid van 99,9% op meer dan een miljoen echte Excel‑formules, waardoor het een van de meest betrouwbare C#‑formuleparsers op de markt is. Het is gevalideerd op de veelgebruikte Enron‑ en EUSES‑benchmarkdatasets en is ontworpen om complexe, geneste en echte formules te verwerken — inclusief array‑expressies, referenties en functies. Hoewel XLParser niet overmatig restrictief is (het kan sommige formules parseren die Excel zou afwijzen), is deze soepelheid opzettelijk voor onderzoeks‑ en analyse‑toepassingen. Ontwikkelaars kunnen XLParser vertrouwen om het overgrote deel van de formules die in productie‑spreadsheets voorkomen te parseren, waardoor robuuste formule‑analyse, refactoring en kwaliteits‑garantie‑workflows mogelijk worden. De compacte grammatica zorgt voor onderhoudbaarheid en draagbaarheid over parser‑frameworks.
Parse een Excel-formule en inspecteer de parse-boom
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());Alle referenties uit Excel-formules extraheren
XLParser bevat de `FormulaAnalyzer`-klasse, die krachtige methoden biedt voor het analyseren van geparseerde formules. Een van de belangrijkste kenmerken is `ParserReferences()`, die alle cel-, bereik-, benoemde bereik- en horizontale/verticale referenties retourneert die in een formule worden gebruikt. Dit is van onschatbare waarde voor afhankelijkheidstracering, impactanalyse en refactoringtools. Bijvoorbeeld, gegeven een formule zoals `SUM(A1:B10, C12, NamedRange)`, zal `ParserReferences()` een lijst retourneren van `A1:B10`, `C12` en `NamedRange`. Dit stelt ontwikkelaars in staat om spreadsheet-audittools te bouwen, datastromen te visualiseren of circulaire afhankelijkheden te detecteren. De methode werkt naadloos met de compacte parse‑boomstructuur, waardoor snelle en nauwkeurige extractie zelfs voor grote formules wordt gegarandeerd.
Alle referenties extraheren met FormulaAnalyzer
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());
}Doorloop en analyseer parse-bomen
De parse‑bomen van XLParser zijn ontworpen voor efficiënte traversie en analyse. De `ExcelFormulaParser`‑klasse biedt methoden zoals `AllNodes` om over elke knoop in de boom te itereren, waardoor aangepaste analyse, transformatie of validatielogica mogelijk is. Ontwikkelaars kunnen knopen filteren op type (bijv. functies, referenties, operatoren) en bewerkingen uitvoeren zoals het tellen van functie‑voorkomens, het detecteren van ongebruikte benoemde bereiken, of het identificeren van potentiële fouten. De `GetFunction()`‑methode vereenvoudigt het extraheren van functienamen uit functie‑aanroep‑knopen, terwijl `Print()` snelle debugging of logging van de structuur van elke knoop mogelijk maakt. Deze mogelijkheden maken XLParser ideaal voor het bouwen van spreadsheet‑kwaliteits‑tools, refactoring‑assistenten en educatieve visualisaties.
Alle knooppunten doorlopen en functienamen extraheren
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-bomen debuggen en visualiseren
XLParser integreert nauw met Irony's GrammarExplorer-tool voor interactieve debugging en boomvisualisatie. Na het bouwen van XLParser en de GrammarExplorer-oplossing kun je `XLParser.dll` laden als een grammatica en formules in realtime testen. Tijdens de ontwikkeling ondersteunt de debugger van Visual Studio het inspecteren van parse-boomknooppunten via het watch-venster met `yournode.Print(),ac`. Deze functie versnelt het begrijpen van complexe formules, het testen van randgevallen en het valideren van grammaticaregels. De compacte boomstructuur zorgt ervoor dat zelfs sterk geneste formules leesbaar en beheersbaar blijven. Of je nu een spreadsheet-analysetool bouwt of het gedrag van Excel-formules onderzoekt, de debuggingondersteuning van XLParser vereenvoudigt ontwikkeling en probleemoplossing.
Een parse‑boomknooppunt debuggen in het Visual Studio Watch‑venster
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac