
XLParser
Analyseur de formules Excel C# open source
Analysez, examinez et parcourez les formules Excel avec une grande précision en utilisant des arbres d'analyse compacts via une bibliothèque C# open source.
Qu'est-ce que XLParser?
XLParser est une bibliothèque C# haute précision pour l'analyse des formules Microsoft Excel, construite sur le framework de parseur Irony. Elle offre un taux de réussite de 99,9 % sur plus d'un million de formules réelles et est spécialement conçue pour l'analyse et la refactorisation de feuilles de calcul. Sa grammaire compacte — moins de 100 jetons et règles de production — la rend facile à comprendre, à maintenir ou à porter vers d'autres langages. XLParser sert d'implémentation de référence de la grammaire Excel publiée dans l'article “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” et prend en charge les ensembles de données de référence Enron et EUSES.
XLParser produit des arbres d'analyse compacts, permettant un parcours, une analyse et une transformation efficaces des formules. Les développeurs peuvent utiliser la classe `ExcelFormulaParser` pour analyser les formules et extraire les noms de fonctions, les références et les sous‑expressions. La classe `FormulaAnalyzer` prend en charge des opérations avancées comme `ParserReferences()` pour récupérer toutes les références de cellules, de plages et nommées. Avec son orientation vers la recherche et les outils, XLParser est idéal pour l'assurance qualité des feuilles de calcul, la refactorisation de formules et les outils éducatifs. Vous pouvez essayer la démo en ligne, installer via NuGet, ou compiler à partir du code source sur [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).
Premiers pas avec XLParser
XLParser est disponible via NuGet et peut être installé en utilisant la console du gestionnaire de packages ou l’interface NuGet de Visual Studio. La façon la plus simple est d’exécuter `Install-Package XLParser` dans la console du gestionnaire de packages. Alternativement, vous pouvez télécharger la dernière version depuis [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), compiler la solution et référencer directement le DLL. La bibliothèque est construite sur le framework de parseur Irony et ne nécessite aucune dépendance supplémentaire. Une fois installé, vous pouvez commencer à analyser les formules Excel en utilisant la classe `ExcelFormulaParser`. Sa méthode `Parse()` accepte une chaîne de formule et renvoie un arbre de syntaxe pour une analyse ou une transformation ultérieure.
Installer XLParser via NuGet
Install-Package XLParserAnalyse de formules Excel à haute compatibilité
XLParser offre un taux de réussite de 99,9 % lors de l'analyse de plus d'un million de formules Excel réelles, ce qui en fait l'un des analyseurs de formules C# les plus fiables disponibles. Il a été validé sur les ensembles de données de référence largement utilisés Enron et EUSES et est conçu pour gérer des formules complexes, imbriquées et réelles — y compris les expressions de tableau, les références et les fonctions. Bien que XLParser ne soit pas excessivement restrictif (il peut analyser certaines formules que Excel rejetterait), cette indulgence est intentionnelle pour les cas d'utilisation de recherche et d'analyse. Les développeurs peuvent faire confiance à XLParser pour analyser la grande majorité des formules rencontrées dans les feuilles de calcul en production, permettant des analyses de formules robustes, du refactoring et des flux de travail d'assurance qualité. Sa grammaire compacte garantit la maintenabilité et la portabilité à travers les frameworks d'analyse.
Analyser une formule Excel et inspecter l'arbre d'analyse
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());Extraire toutes les références des formules Excel
XLParser inclut la classe `FormulaAnalyzer`, qui fournit des méthodes puissantes pour analyser les formules analysées. L'une de ses fonctionnalités clés est `ParserReferences()`, qui renvoie toutes les références de cellules, de plages, de plages nommées et les références horizontales/verticales utilisées dans une formule. Cela est inestimable pour le suivi des dépendances, l'analyse d'impact et les outils de refactorisation. Par exemple, étant donné une formule telle que `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` renverra une liste de `A1:B10`, `C12` et `NamedRange`. Cela permet aux développeurs de créer des outils d'audit de feuilles de calcul, de visualiser le flux de données ou de détecter les dépendances circulaires. La méthode fonctionne de manière transparente avec la structure d'arbre d'analyse compacte, garantissant une extraction rapide et précise même pour les grandes formules.
Extraire toutes les références à l'aide de 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());
}Parcourir et analyser les arbres d'analyse
Les arbres d'analyse de XLParser sont conçus pour un parcours et une analyse efficaces. La classe `ExcelFormulaParser` fournit des méthodes comme `AllNodes` pour itérer sur chaque nœud de l'arbre, permettant une analyse, une transformation ou une logique de validation personnalisées. Les développeurs peuvent filtrer les nœuds par type (par exemple, fonctions, références, opérateurs) et effectuer des opérations telles que le comptage des occurrences de fonctions, la détection de plages nommées inutilisées ou l'identification d'éventuelles erreurs. La méthode `GetFunction()` simplifie l'extraction des noms de fonctions à partir des nœuds d'appel de fonction, tandis que `Print()` permet un débogage rapide ou la journalisation de la structure de n'importe quel nœud. Ces capacités font de XLParser un outil idéal pour créer des outils de qualité de feuilles de calcul, des assistants de refactorisation et des visualisations éducatives.
Parcourir tous les nœuds et extraire les noms de fonctions
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()}");
}Déboguer et visualiser les arbres d'analyse
XLParser s'intègre étroitement à l'outil GrammarExplorer d'Irony pour le débogage interactif et la visualisation des arbres. Après avoir construit XLParser et la solution GrammarExplorer, vous pouvez charger `XLParser.dll` en tant que grammaire et tester les formules en temps réel. Pendant le développement, le débogueur de Visual Studio permet d'inspecter les nœuds de l'arbre d'analyse via la fenêtre de surveillance en utilisant `yournode.Print(),ac`. Cette fonctionnalité accélère la compréhension des formules complexes, le test des cas limites et la validation des règles de grammaire. La structure d'arbre compacte garantit que même les formules profondément imbriquées restent lisibles et maniables. Que vous construisiez un outil d'analyse de feuilles de calcul ou que vous recherchiez le comportement des formules Excel, le support de débogage d'XLParser simplifie le développement et le dépannage.
Déboguer un nœud d'arbre d'analyse dans la fenêtre de surveillance de Visual Studio
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac