
XLParser
Parser di formule Excel C# open source
Analizza, esamina e attraversa le formule Excel con alta precisione usando alberi di parsing compatti tramite libreria C# open source.
Che cos'è XLParser?
XLParser è una libreria C# ad alta precisione per l'analisi delle formule di Microsoft Excel, costruita sul framework di parsing Irony. Offre un tasso di successo del 99,9% su oltre un milione di formule reali ed è specificamente progettata per l'analisi e la rifattorizzazione di fogli di calcolo. La sua grammatica compatta—meno di 100 token e regole di produzione—la rende facile da comprendere, mantenere o portare in altri linguaggi. XLParser funge da implementazione di riferimento della grammatica Excel pubblicata nel documento “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” e supporta i dataset di benchmark Enron e EUSES.
XLParser produce alberi di analisi compatti, consentendo una traversata, analisi e trasformazione efficienti delle formule. Gli sviluppatori possono utilizzare la classe `ExcelFormulaParser` per analizzare le formule ed estrarre i nomi delle funzioni, i riferimenti e le sottoespressioni. La classe `FormulaAnalyzer` supporta inoltre operazioni avanzate come `ParserReferences()` per recuperare tutti i riferimenti a celle, intervalli e nomi. Con il suo focus sulla ricerca e sugli strumenti, XLParser è ideale per l'assicurazione della qualità dei fogli di calcolo, il refactoring delle formule e gli strumenti educativi. È possibile provare la demo online, installare tramite NuGet o compilare dal sorgente su [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).
Iniziare con XLParser
XLParser è disponibile tramite NuGet e può essere installato usando la Console di Gestione Pacchetti o l'interfaccia NuGet di Visual Studio. Il modo più semplice è eseguire `Install-Package XLParser` nella Console di Gestione Pacchetti. In alternativa, è possibile scaricare l'ultima versione da [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), compilare la soluzione e fare riferimento direttamente al DLL. La libreria è costruita sul framework di parsing Irony e non richiede dipendenze aggiuntive. Una volta installato, è possibile iniziare a analizzare le formule Excel utilizzando la classe `ExcelFormulaParser`. Il suo metodo `Parse()` accetta una stringa di formula e restituisce un albero di parsing per ulteriori analisi o trasformazioni.
Installa XLParser tramite NuGet
Install-Package XLParserParsing di formule Excel ad alta compatibilità
XLParser offre un tasso di analisi riuscita del 99,9% su oltre un milione di formule Excel reali, rendendolo uno dei parser di formule C# più affidabili disponibili. È stato convalidato sui dataset di benchmark ampiamente utilizzati Enron e EUSES ed è progettato per gestire formule complesse, nidificate e reali, comprese espressioni di array, riferimenti e funzioni. Sebbene XLParser non sia eccessivamente restrittivo (può analizzare alcune formule che Excel rifiuterebbe), questa flessibilità è intenzionale per casi d'uso di ricerca e analisi. Gli sviluppatori possono fidarsi di XLParser per analizzare la stragrande maggioranza delle formule incontrate nei fogli di calcolo di produzione, consentendo analisi robuste delle formule, refactoring e flussi di lavoro di assicurazione della qualità. La sua grammatica compatta garantisce manutenibilità e portabilità tra i framework di parsing.
Analizza una formula Excel e ispeziona l'albero di parsing
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());Estrai tutti i riferimenti dalle formule Excel
XLParser include la classe `FormulaAnalyzer`, che fornisce potenti metodi per analizzare le formule analizzate. Una delle sue caratteristiche principali è `ParserReferences()`, che restituisce tutti i riferimenti a celle, intervalli, intervalli denominati e riferimenti orizzontali/verticali usati in una formula. Questo è inestimabile per il tracciamento delle dipendenze, l'analisi dell'impatto e gli strumenti di refactoring. Per esempio, data una formula come `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` restituirà un elenco di `A1:B10`, `C12` e `NamedRange`. Questo consente agli sviluppatori di creare strumenti di audit dei fogli di calcolo, visualizzare il flusso dei dati o rilevare dipendenze circolari. Il metodo funziona senza problemi con la struttura compatta dell'albero di parsing, garantendo un'estrazione rapida e accurata anche per formule di grandi dimensioni.
Estrai tutti i riferimenti usando 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());
}Attraversa e analizza gli alberi di parsing
Gli alberi di analisi di XLParser sono progettati per un attraversamento e un'analisi efficienti. La classe `ExcelFormulaParser` fornisce metodi come `AllNodes` per iterare su ogni nodo dell'albero, consentendo logiche di analisi, trasformazione o convalida personalizzate. Gli sviluppatori possono filtrare i nodi per tipo (ad es., funzioni, riferimenti, operatori) ed eseguire operazioni come contare le occorrenze delle funzioni, rilevare intervalli denominati inutilizzati o identificare potenziali errori. Il metodo `GetFunction()` semplifica l'estrazione dei nomi delle funzioni dai nodi di chiamata di funzione, mentre `Print()` consente un rapido debug o la registrazione della struttura di qualsiasi nodo. Queste capacità rendono XLParser ideale per creare strumenti di qualità per fogli di calcolo, assistenti di refactoring e visualizzazioni educative.
Scorri tutti i nodi ed estrai i nomi delle funzioni
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()}");
}Esegui il debug e visualizza gli alberi di parsing
XLParser si integra strettamente con lo strumento GrammarExplorer di Irony per il debug interattivo e la visualizzazione degli alberi. Dopo aver compilato XLParser e la soluzione GrammarExplorer, è possibile caricare `XLParser.dll` come grammatica e testare le formule in tempo reale. Durante lo sviluppo, il debugger di Visual Studio supporta l'ispezione dei nodi dell'albero di analisi tramite la finestra di watch usando `yournode.Print(),ac`. Questa funzionalità accelera la comprensione di formule complesse, il test di casi limite e la convalida delle regole grammaticali. La struttura compatta dell'albero garantisce che anche le formule nidificate in profondità rimangano leggibili e gestibili. Che tu stia creando uno strumento di analisi dei fogli di calcolo o studiando il comportamento delle formule di Excel, il supporto al debug di XLParser semplifica lo sviluppo e la risoluzione dei problemi.
Esegui il debug di un nodo dell'albero di analisi nella finestra Watch di Visual Studio
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac