XLParser

 
 

Отворен код C# парсер за Excel формули

Парсирайте, анализирайте и обхождайте Excel формули с висока точност, използвайки компактни дървета за парсиране чрез отворен код C# библиотека.

Какво е XLParser?

XLParser е високоточна C# библиотека за парсиране на формули на Microsoft Excel, изградена върху парсерната рамка Irony. Тя постига 99,9 % успех при над един милион реални формули и е специално проектирана за анализ и рефакторинг на електронни таблици. Нейната компактна граматика — по-малко от 100 токена и продукционни правила — я прави лесна за разбиране, поддръжка или пренос към други езици. XLParser служи като референтна имплементация на граматиката на Excel, публикувана в статията “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets”, и поддържа наборите данни за бенчмарк Enron и EUSES.

XLParser създава компактни дървета за парсиране, позволявайки ефективно обхождане, анализ и трансформация на формули. Разработчиците могат да използват класа `ExcelFormulaParser`, за да парсират формули и извличат имена на функции, референции и подизрази. Класът `FormulaAnalyzer` допълнително поддържа разширени операции като `ParserReferences()`, за да извлече всички клетъчни, диапазонни и именовани референции. Със своя фокус върху изследванията и инструментите, XLParser е идеален за осигуряване на качество на електронни таблици, рефакторинг на формули и образователни инструменти. Можете да опитате онлайн демото, да инсталирате чрез NuGet или да изградите от изходния код на [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).

Previous Next

Започване с XLParser

XLParser е достъпен чрез NuGet и може да бъде инсталиран чрез Package Manager Console или NuGet UI на Visual Studio. Най‑лесният начин е да изпълните `Install-Package XLParser` в Package Manager Console. Алтернативно, можете да изтеглите последното издание от [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), да компилирате решението и директно да реферирате DLL‑файла. Библиотеката е изградена върху парсърната рамка Irony и не изисква допълнителни зависимости. След инсталиране можете да започнете да парсирате Excel формули, използвайки класа `ExcelFormulaParser`. Неговият метод `Parse()` приема низ с формула и връща дърво на парсинга за по‑нататъшен анализ или трансформация.

Инсталирайте XLParser чрез NuGet

Install-Package XLParser

Висока съвместимост при парсиране на Excel формули

XLParser осигурява 99,9% успешен процент на парсиране на над един милион реални Excel формули, което го прави един от най-надеждните C# парсери за формули, налични. Той беше валидиран върху широко използваните набори от данни за бенчмарк Enron и EUSES и е проектиран да обработва сложни, вложени и реални формули — включително изрази за масиви, препратки и функции. Въпреки че XLParser не е прекалено рестриктивен (може да парсира някои формули, които Excel би отхвърлил), тази гъвкавост е умишлена за случаи на използване в изследвания и анализ. Разработчиците могат да се доверят на XLParser за парсиране на по-голямата част от формулите, срещани в продукционни електронни таблици, което позволява стабилен анализ на формули, рефакторинг и процеси за осигуряване на качество. Неговата компактна граматика осигурява поддръжка и преносимост в различни парсерни рамки.

Парсирайте Excel формула и прегледайте дървото за парсиране

using XLParser;

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

Извличане на всички препратки от Excel формули

XLParser включва класа `FormulaAnalyzer`, който предоставя мощни методи за анализиране на парсирани формули. Една от ключовите му функции е `ParserReferences()`, която връща всички клетки, диапазони, именувани диапазони и хоризонтални/вертикални препратки, използвани във формула. Това е безценно за проследяване на зависимости, анализ на въздействието и инструменти за рефакторинг. Например, дадена формула като `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` ще върне списък от `A1:B10`, `C12` и `NamedRange`. Това позволява на разработчиците да създават инструменти за одит на електронни таблици, визуализират потока на данни или откриват циклични зависимости. Методът работи безпроблемно с компактната структура на парс дървото, осигурявайки бързо и точно извличане дори за големи формули.

Извличане на всички препратки с 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());
}

Обхождане и анализ на дървета за парсиране

Parse дърветата на XLParser са проектирани за ефективно обхождане и анализ. Класът `ExcelFormulaParser` предоставя методи като `AllNodes`, които позволяват итерация върху всеки възел в дървото, осигурявайки персонализиран анализ, трансформация или логика за валидация. Разработчиците могат да филтрират възлите по тип (например функции, референции, оператори) и да извършват операции като броене на появявания на функции, откриване на неизползвани именовани диапазони или идентифициране на потенциални грешки. Методът `GetFunction()` опростява извличането на имена на функции от възли с извикване на функция, докато `Print()` позволява бързо отстраняване на грешки или записване на структурата на всеки възел. Тези възможности правят XLParser идеален за създаване на инструменти за качество на електронни таблици, асистенти за рефакторинг и образователни визуализации.

Обхождане на всички възли и извличане на имената на функциите

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

Отстраняване на грешки и визуализиране на дървета за парсиране

XLParser се интегрира плътно с инструмента GrammarExplorer на Irony за интерактивно отстраняване на грешки и визуализация на дървото. След като изградите XLParser и решението GrammarExplorer, можете да заредите `XLParser.dll` като граматика и да тествате формули в реално време. По време на разработката, дебъгерът на Visual Studio поддържа инспектиране на възлите на парсинг дървото чрез прозореца за наблюдение, използвайки `yournode.Print(),ac`. Тази функция ускорява разбирането на сложни формули, тестването на гранични случаи и валидирането на граматичните правила. Компактната структура на дървото гарантира, че дори дълбоко вложени формули остават четими и управляеми. Независимо дали създавате инструмент за анализ на електронни таблици или изследвате поведението на формули в Excel, поддръжката за отстраняване на грешки в XLParser опростява разработката и отстраняването на проблеми.

Отстраняване на грешки във възел от парс дървото в прозореца Watch на Visual Studio

var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac
 Български