
XLParser
מפרש נוסחאות Excel ב‑C# קוד פתוח
פענח, נתח ועבור על נוסחאות 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).
התחלה עם XLParser
XLParser זמין דרך NuGet וניתן להתקין אותו באמצעות קונסול מנהל החבילות או ממשק ה‑NuGet של Visual Studio. הדרך הפשוטה ביותר היא להריץ `Install-Package XLParser` בקונסול מנהל החבילות. לחלופין, ניתן להוריד את הגרסה האחרונה מ-[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 מפשטת את הפיתוח והפתרון של בעיות.
ניפוי שגיאות של צומת עץ ניתוח בחלון Watch של Visual Studio
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac