XLParser

 
 

Analizador de fórmulas de Excel C# de código abierto

Analiza, examina y recorre fórmulas de Excel con alta precisión usando árboles de análisis compactos mediante una biblioteca C# de código abierto.

¿Qué es XLParser?

XLParser es una biblioteca de C# de alta precisión para analizar fórmulas de Microsoft Excel, construida sobre el framework de análisis Irony. Ofrece una tasa de éxito del 99,9% en más de un millón de fórmulas reales y está diseñada específicamente para el análisis y refactorización de hojas de cálculo. Su gramática compacta —menos de 100 tokens y reglas de producción— facilita su comprensión, mantenimiento o portabilidad a otros lenguajes. XLParser sirve como la implementación de referencia de la gramática de Excel publicada en el artículo “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” y soporta los conjuntos de datos de referencia Enron y EUSES.

XLParser produce árboles de análisis compactos, lo que permite un recorrido, análisis y transformación eficientes de fórmulas. Los desarrolladores pueden usar la clase `ExcelFormulaParser` para analizar fórmulas y extraer nombres de funciones, referencias y subexpresiones. La clase `FormulaAnalyzer` también admite operaciones avanzadas como `ParserReferences()` para recuperar todas las referencias a celdas, rangos y nombres. Con su enfoque en la investigación y herramientas, XLParser es ideal para aseguramiento de calidad de hojas de cálculo, refactorización de fórmulas y herramientas educativas. Puedes probar la demostración en línea, instalar vía NuGet o compilar desde el código fuente en [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).

Previous Next

Comenzando con XLParser

XLParser está disponible a través de NuGet y puede instalarse usando la Consola del Administrador de paquetes o la interfaz de NuGet de Visual Studio. La forma más sencilla es ejecutar `Install-Package XLParser` en la Consola del Administrador de paquetes. Alternativamente, puedes descargar la última versión desde [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), compilar la solución y referenciar directamente el DLL. La biblioteca está construida sobre el framework de análisis Irony y no requiere dependencias adicionales. Una vez instalado, puedes comenzar a analizar fórmulas de Excel usando la clase `ExcelFormulaParser`. Su método `Parse()` acepta una cadena de fórmula y devuelve un árbol de análisis para un mayor análisis o transformación.

Instalar XLParser vía NuGet

Install-Package XLParser

Análisis de fórmulas de Excel de alta compatibilidad

XLParser ofrece una tasa de análisis exitosa del 99,9% en más de un millón de fórmulas reales de Excel, lo que lo convierte en uno de los analizadores de fórmulas C# más fiables disponibles. Fue validado con los conjuntos de datos de referencia ampliamente utilizados Enron y EUSES y está diseñado para manejar fórmulas complejas, anidadas y del mundo real, incluidas expresiones de matrices, referencias y funciones. Aunque XLParser no es excesivamente restrictivo (puede analizar algunas fórmulas que Excel rechazaría), esta flexibilidad es intencional para casos de uso de investigación y análisis. Los desarrolladores pueden confiar en que XLParser analice la gran mayoría de las fórmulas encontradas en hojas de cálculo de producción, lo que permite análisis de fórmulas robustos, refactorización y flujos de trabajo de aseguramiento de calidad. Su gramática compacta garantiza mantenibilidad y portabilidad entre los marcos de análisis.

Analizar una fórmula de Excel e inspeccionar el árbol de análisis

using XLParser;

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

Extraer todas las referencias de fórmulas de Excel

XLParser incluye la clase `FormulaAnalyzer`, que proporciona métodos potentes para analizar fórmulas analizadas. Una de sus características clave es `ParserReferences()`, que devuelve todas las referencias a celdas, rangos, rangos nombrados y referencias horizontales/verticales usadas en una fórmula. Esto es invaluable para el seguimiento de dependencias, análisis de impacto y herramientas de refactorización. Por ejemplo, dada una fórmula como `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` devolverá una lista de `A1:B10`, `C12` y `NamedRange`. Esto permite a los desarrolladores crear herramientas de auditoría de hojas de cálculo, visualizar el flujo de datos o detectar dependencias circulares. El método funciona sin problemas con la estructura de árbol de análisis compacto, garantizando una extracción rápida y precisa incluso para fórmulas grandes.

Extraer todas las referencias 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());
}

Recorrer y analizar árboles de análisis

Los árboles de análisis de XLParser están diseñados para un recorrido y análisis eficientes. La clase `ExcelFormulaParser` proporciona métodos como `AllNodes` para iterar sobre cada nodo del árbol, permitiendo lógica de análisis, transformación o validación personalizada. Los desarrolladores pueden filtrar nodos por tipo (p. ej., funciones, referencias, operadores) y realizar operaciones como contar ocurrencias de funciones, detectar rangos nombrados no utilizados o identificar posibles errores. El método `GetFunction()` simplifica la extracción de nombres de funciones de los nodos de llamada a funciones, mientras que `Print()` permite una depuración rápida o el registro de la estructura de cualquier nodo. Estas capacidades hacen que XLParser sea ideal para crear herramientas de calidad de hojas de cálculo, asistentes de refactorización y visualizaciones educativas.

Recorrer todos los nodos y extraer los nombres de funciones

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()}");
}

Depurar y visualizar árboles de análisis

XLParser se integra estrechamente con la herramienta GrammarExplorer de Irony para depuración interactiva y visualización de árboles. Después de compilar XLParser y la solución GrammarExplorer, puedes cargar `XLParser.dll` como una gramática y probar fórmulas en tiempo real. Durante el desarrollo, el depurador de Visual Studio permite inspeccionar los nodos del árbol de análisis mediante la ventana de inspección usando `yournode.Print(),ac`. Esta característica acelera la comprensión de fórmulas complejas, la prueba de casos límite y la validación de reglas gramaticales. La estructura compacta del árbol garantiza que incluso las fórmulas profundamente anidadas sigan siendo legibles y manejables. Ya sea que estés construyendo una herramienta de análisis de hojas de cálculo o investigando el comportamiento de fórmulas de Excel, el soporte de depuración de XLParser simplifica el desarrollo y la solución de problemas.

Depurar un nodo del árbol de análisis en la ventana de inspección de Visual Studio

var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac
 Español