
XLParser
Öppen källkod C# Excel-formelparser
Tolka, analysera och traversera Excel-formler med hög noggrannhet med hjälp av kompakta parse-träd via ett öppet källkods‑C#‑bibliotek.
Vad är XLParser?
XLParser är ett högprecisions C#-bibliotek för att parsra Microsoft Excel-formler, byggt på Irony parser-ramverket. Det levererar en framgångsfrekvens på 99.9 % på över en miljon verkliga formler och är specifikt utformat för kalkylbladsanalys och refaktorering. Dess kompakta grammatik—mindre än 100 token och produktionsregler—gör den lätt att förstå, underhålla eller portera till andra språk. XLParser fungerar som referensimplementationen av Excel-grammatiken som publicerades i artikeln “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” och stödjer benchmark-datasetsen Enron och EUSES.
XLParser producerar kompakta parse-träd, vilket möjliggör effektiv traversering, analys och transformation av formler. Utvecklare kan använda klassen `ExcelFormulaParser` för att analysera formler och extrahera funktionsnamn, referenser och deluttryck. Klassen `FormulaAnalyzer` stödjer dessutom avancerade operationer som `ParserReferences()` för att hämta alla cell-, intervalls- och namngivna referenser. Med sitt fokus på forskning och verktyg är XLParser idealisk för kvalitetssäkring av kalkylblad, refaktorering av formler och utbildningsverktyg. Du kan prova den online‑demo, installera via NuGet eller bygga från källkod på [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).
Komma igång med XLParser
XLParser är tillgänglig via NuGet och kan installeras med hjälp av Package Manager Console eller Visual Studios NuGet‑UI. Det enklaste sättet är att köra `Install-Package XLParser` i Package Manager Console. Alternativt kan du ladda ner den senaste versionen från [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), bygga lösningen och referera DLL‑filen direkt. Biblioteket är byggt på Irony‑parserramverket och kräver inga ytterligare beroenden. När det är installerat kan du börja parsning av Excel‑formler med klassen `ExcelFormulaParser`. Dess `Parse()`‑metod accepterar en formelsträng och returnerar ett parse‑träd för vidare analys eller transformation.
Installera XLParser via NuGet
Install-Package XLParserHög kompatibilitet vid parsning av Excel-formler
XLParser levererar en 99,9 % lyckad parsning på över en miljon verkliga Excel-formler, vilket gör det till en av de mest pålitliga C#-formelparsers som finns tillgängliga. Det validerades på de allmänt använda benchmark-datasetsen Enron och EUSES och är utformat för att hantera komplexa, nästlade och verkliga formler — inklusive matrisuttryck, referenser och funktioner. Även om XLParser inte är alltför restriktiv (det kan parsra vissa formler som Excel skulle avvisa) är denna tolerans avsiktlig för forsknings- och analysändamål. Utvecklare kan lita på att XLParser parsar den stora majoriteten av formler som förekommer i produktionskalkylblad, vilket möjliggör robust formlanalys, refaktorering och kvalitetssäkringsarbetsflöden. Dess kompakta grammatik säkerställer underhållbarhet och portabilitet över parser-ramverk.
Parsa en Excel-formel och inspektera parsningsträdet
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());Extrahera alla referenser från Excel-formler
XLParser inkluderar klassen `FormulaAnalyzer`, som tillhandahåller kraftfulla metoder för att analysera parsade formler. En av dess nyckelfunktioner är `ParserReferences()`, som returnerar alla cell-, område-, namngivna område- och horisontella/vertikala referenser som används i en formel. Detta är ovärderligt för beroendespårning, påverkananalys och refaktoriseringsverktyg. Till exempel, given en formel som `SUM(A1:B10, C12, NamedRange)`, kommer `ParserReferences()` att returnera en lista med `A1:B10`, `C12` och `NamedRange`. Detta möjliggör för utvecklare att bygga verktyg för kalkylbladsgranskning, visualisera dataflöde eller upptäcka cirkulära beroenden. Metoden fungerar sömlöst med den kompakta parsningsträdstrukturen, vilket säkerställer snabb och exakt extraktion även för stora formler.
Extrahera alla referenser med 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());
}Traversera och analysera parsningsträd
XLParser:s parsningsträd är utformade för effektiv traversering och analys. Klassen `ExcelFormulaParser` tillhandahåller metoder som `AllNodes` för att iterera över varje nod i trädet, vilket möjliggör anpassad analys, transformation eller valideringslogik. Utvecklare kan filtrera noder efter typ (t.ex. funktioner, referenser, operatorer) och utföra operationer såsom att räkna funktionstillfällen, upptäcka oanvända namngivna områden eller identifiera potentiella fel. Metoden `GetFunction()` förenklar extrahering av funktionsnamn från funktionsanropsnoder, medan `Print()` möjliggör snabb felsökning eller loggning av en nods struktur. Dessa möjligheter gör XLParser idealisk för att bygga verktyg för kalkylblads kvalitet, refaktoriseringsassistenter och pedagogiska visualiseringar.
Traversera alla noder och extrahera funktionsnamn
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()}");
}Felsök och visualisera parsningsträd
XLParser integreras tätt med Ironys GrammarExplorer-verktyg för interaktiv felsökning och trädvisualisering. Efter att ha byggt XLParser och GrammarExplorer-lösningen kan du ladda `XLParser.dll` som en grammatik och testa formler i realtid. Under utvecklingen stödjer Visual Studios debugger att inspektera parsningsträdnoder via övervakningsfönstret med `yournode.Print(),ac`. Denna funktion påskyndar förståelsen av komplexa formler, testning av kantfall och validering av grammatikregler. Den kompakta trädstrukturen säkerställer att även djupt nästlade formler förblir läsbara och hanterbara. Oavsett om du bygger ett verktyg för kalkylbladsanalys eller forskar om Excelformelbeteende, förenklar XLParser:s felsökningsstöd utveckling och problemlösning.
Felsök en parsningsträdnod i Visual Studio Watch-fönster
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac