1. Produkty
  2.   Arkusz
  3.   .NET
  4.   XLParser

XLParser

 
 

Open Source parser formuł Excel w C#

Parsuj, analizuj i przeglądaj formuły Excel z wysoką dokładnością, używając zwartymi drzewami parsowania dzięki otwartoźródłowej bibliotece C#.

Czym jest XLParser?

XLParser to wysokiej precyzji biblioteka C# do parsowania formuł Microsoft Excel, zbudowana na frameworku parsera Irony. Osiąga 99,9% skuteczności przy ponad milionie rzeczywistych formuł i jest specjalnie zaprojektowana do analizy i refaktoryzacji arkuszy kalkulacyjnych. Jej kompaktowa gramatyka — mniej niż 100 tokenów i reguł produkcji — ułatwia zrozumienie, utrzymanie oraz przenoszenie na inne języki. XLParser jest referencyjną implementacją gramatyki Excela opublikowanej w artykule “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” i obsługuje zestawy danych benchmarkowych Enron i EUSES.

XLParser tworzy zwarte drzewa parsowania, umożliwiając efektywne przeglądanie, analizę i transformację formuł. Programiści mogą używać klasy `ExcelFormulaParser` do parsowania formuł i wyodrębniania nazw funkcji, odwołań i podwyrażeń. Klasa `FormulaAnalyzer` dodatkowo wspiera zaawansowane operacje, takie jak `ParserReferences()`, aby pobrać wszystkie odwołania do komórek, zakresów i nazw. Dzięki skupieniu na badaniach i narzędziach, XLParser jest idealny do zapewniania jakości arkuszy kalkulacyjnych, refaktoryzacji formuł oraz narzędzi edukacyjnych. Możesz wypróbować demo online, zainstalować przez NuGet lub zbudować ze źródeł na [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).

Previous Next

Rozpoczęcie pracy z XLParser

XLParser jest dostępny przez NuGet i może być zainstalowany przy użyciu konsoli Menedżera Pakietów lub interfejsu NuGet w Visual Studio. Najprostszy sposób to uruchomienie `Install-Package XLParser` w konsoli Menedżera Pakietów. Alternatywnie możesz pobrać najnowsze wydanie z [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), zbudować rozwiązanie i odwołać się bezpośrednio do pliku DLL. Biblioteka jest oparta na frameworku parsera Irony i nie wymaga dodatkowych zależności. Po zainstalowaniu możesz rozpocząć parsowanie formuł Excel przy użyciu klasy `ExcelFormulaParser`. Jej metoda `Parse()` przyjmuje ciąg formuły i zwraca drzewo parsowania do dalszej analizy lub transformacji.

Zainstaluj XLParser przez NuGet

Install-Package XLParser

Wysoka kompatybilność parsowania formuł Excel

XLParser zapewnia 99,9% skuteczności parsowania ponad miliona rzeczywistych formuł Excel, co czyni go jednym z najbardziej niezawodnych parserów formuł C# dostępnych na rynku. Został zweryfikowany na szeroko stosowanych zestawach danych benchmarkowych Enron i EUSES i został zaprojektowany do obsługi złożonych, zagnieżdżonych oraz rzeczywistych formuł — w tym wyrażeń tablicowych, odwołań i funkcji. Choć XLParser nie jest nadmiernie restrykcyjny (może parsować niektóre formuły, które Excel odrzuciłby), ta elastyczność jest zamierzona w przypadkach badań i analiz. Programiści mogą polegać na XLParser, aby parsować zdecydowaną większość formuł napotykanych w produkcyjnych arkuszach kalkulacyjnych, umożliwiając solidną analizę formuł, refaktoryzację i procesy zapewniania jakości. Jego kompaktowa gramatyka zapewnia łatwość utrzymania i przenośność w różnych frameworkach parserów.

Parsuj formułę Excel i sprawdź drzewo parsowania

using XLParser;

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

Wyodrębnij wszystkie odwołania z formuł Excel

XLParser zawiera klasę `FormulaAnalyzer`, która zapewnia potężne metody do analizy parsowanych formuł. Jedną z jej kluczowych funkcji jest `ParserReferences()`, która zwraca wszystkie odwołania do komórek, zakresów, nazwanych zakresów oraz odwołania poziome/pionowe użyte w formule. Jest to nieocenione przy śledzeniu zależności, analizie wpływu i narzędziach refaktoryzacji. Na przykład, mając formułę taką jak `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` zwróci listę `A1:B10`, `C12` i `NamedRange`. Umożliwia to programistom tworzenie narzędzi do audytu arkuszy kalkulacyjnych, wizualizacji przepływu danych lub wykrywania cyklicznych zależności. Metoda działa płynnie z kompaktową strukturą drzewa parsowania, zapewniając szybkie i dokładne wyodrębnianie nawet dla dużych formuł.

Wyodrębnij wszystkie odwołania przy użyciu 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());
}

Przeglądaj i analizuj drzewa parsowania

Drzewa parsowania XLParsera zostały zaprojektowane pod kątem efektywnego przeglądania i analizy. Klasa `ExcelFormulaParser` udostępnia metody takie jak `AllNodes`, które pozwalają iterować po każdym węźle drzewa, umożliwiając niestandardową analizę, transformację lub logikę walidacji. Programiści mogą filtrować węzły według typu (np. funkcje, odwołania, operatory) i wykonywać operacje takie jak liczenie wystąpień funkcji, wykrywanie nieużywanych nazwanych zakresów lub identyfikowanie potencjalnych błędów. Metoda `GetFunction()` upraszcza wyodrębnianie nazw funkcji z węzłów wywołań funkcji, natomiast `Print()` umożliwia szybkie debugowanie lub logowanie struktury dowolnego węzła. Te możliwości sprawiają, że XLParser jest idealny do tworzenia narzędzi zapewniających jakość arkuszy kalkulacyjnych, asystentów refaktoryzacji oraz edukacyjnych wizualizacji.

Przejdź przez wszystkie węzły i wyodrębnij nazwy funkcji

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()}");
}

Debuguj i wizualizuj drzewa parsowania

XLParser ściśle integruje się z narzędziem GrammarExplorer firmy Irony, umożliwiając interaktywne debugowanie i wizualizację drzew. Po zbudowaniu XLParser i rozwiązania GrammarExplorer możesz załadować `XLParser.dll` jako gramatykę i testować formuły w czasie rzeczywistym. Podczas rozwoju debugger Visual Studio umożliwia przeglądanie węzłów drzewa parsowania w oknie obserwacji przy użyciu `yournode.Print(),ac`. Ta funkcja przyspiesza zrozumienie złożonych formuł, testowanie przypadków brzegowych i weryfikację reguł gramatyki. Kompaktowa struktura drzewa zapewnia, że nawet głęboko zagnieżdżone formuły pozostają czytelne i łatwe do zarządzania. Niezależnie od tego, czy tworzysz narzędzie do analizy arkuszy kalkulacyjnych, czy badanie zachowania formuł Excel, wsparcie debugowania XLParser upraszcza rozwój i rozwiązywanie problemów.

Debuguj węzeł drzewa parsowania w oknie Watch w Visual Studio

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