XLParser

 
 

پارسر فرمول اکسل C# متن باز

تجزیه، تحلیل و پیمایش فرمول‌های اکسل با دقت بالا با استفاده از درخت‌های تجزیه فشرده از طریق کتابخانه متن باز 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 در Visual Studio نصب کرد. ساده‌ترین روش اجرای `Install-Package XLParser` در Package Manager Console است. به‌علاوه، می‌توانید آخرین نسخه را از [XLParser گیت‌هاب](https://github.com/spreadsheetlab/XLParser) دانلود کنید، راه‌حل را بسازید و DLL را به‌صورت مستقیم ارجاع دهید. این کتابخانه بر پایه چارچوب پارسر Irony ساخته شده و نیازی به وابستگی‌های اضافی ندارد. پس از نصب، می‌توانید با استفاده از کلاس `ExcelFormulaParser` فرمول‌های اکسل را تجزیه کنید. متد `Parse()` آن یک رشته فرمول را می‌پذیرد و درخت تجزیه را برای تجزیه و تحلیل یا تبدیل‌های بعدی برمی‌گرداند.

نصب XLParser از طریق NuGet

Install-Package XLParser

تجزیه فرمول‌های اکسل با سازگاری بالا

XLParser با نرخ تجزیه موفق 99.9٪ بر روی بیش از یک میلیون فرمول واقعی اکسل، یکی از قابل اعتمادترین تجزیه‌کننده‌های فرمول C# موجود است. این ابزار بر روی مجموعه‌های داده معیار Enron و EUSES که به‌طور گسترده استفاده می‌شوند، اعتبارسنجی شده و برای پردازش فرمول‌های پیچیده، تو در تو و واقعی طراحی شده است — از جمله عبارات آرایه‌ای، مراجع و توابع. اگرچه XLParser محدودیتی بیش از حد ندارد (ممکن است برخی فرمول‌هایی را که اکسل رد می‌کند، تجزیه کند)، این انعطاف‌پذیری به‌صورت عمدی برای موارد تحقیق و تحلیل است. توسعه‌دهندگان می‌توانند به XLParser اعتماد کنند تا اکثر فرمول‌های موجود در صفحات گسترده تولیدی را تجزیه کند و امکان تحلیل قوی فرمول، بازسازی و گردش کار تضمین کیفیت را فراهم آورد. گرامر فشرده آن، نگهداری و قابلیت حمل‌پذیری را در چارچوب‌های مختلف تجزیه‌کننده تضمین می‌کند.

تجزیه یک فرمول اکسل و بررسی درخت تجزیه

using XLParser;

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

استخراج تمام ارجاعات از فرمول‌های اکسل

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 امکان بررسی گره‌های درخت تجزیه را از طریق پنجره watch با استفاده از `yournode.Print(),ac` فراهم می‌کند. این ویژگی درک فرمول‌های پیچیده، آزمایش موارد لبه‌ای و اعتبارسنجی قواعد گرامری را تسریع می‌کند. ساختار درخت فشرده تضمین می‌کند که حتی فرمول‌های عمیق‌تودار نیز قابل خواندن و مدیریت باقی بمانند. چه در حال ساخت ابزار تحلیل صفحه‌گسترده باشید و چه در حال تحقیق درباره رفتار فرمول‌های Excel، پشتیبانی اشکال‌زدایی XLParser توسعه و عیب‌یابی را ساده می‌کند.

اشکال‌زدایی یک گره درخت تجزیه در پنجره Watch ویژوال استودیو

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