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 або інтерфейсу NuGet у Visual Studio. Найпростіший спосіб — запустити `Install-Package XLParser` у консолі Package Manager. Альтернативно, ви можете завантажити останню версію з [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());
}

Обхід і аналіз дерев парсингу

Дерева розбору 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 спрощує розробку та усунення проблем.

Налагодити вузол дерева розбору у вікні спостереження Visual Studio

var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac
 Українська