
XLParser
Analisador de Fórmulas Excel C# de Código Aberto
Analise, Examine e Percorra Fórmulas do Excel com Alta Precisão Usando Árvores de Análise Compactas via Biblioteca C# de Código Aberto.
O que é XLParser?
XLParser é uma biblioteca C# de alta precisão para analisar fórmulas do Microsoft Excel, construída sobre a estrutura de analisador Irony. Ela oferece uma taxa de sucesso de 99,9% em mais de um milhão de fórmulas reais e foi projetada especificamente para análise e refatoração de planilhas. Sua gramática compacta — menos de 100 tokens e regras de produção — facilita a compreensão, manutenção ou portabilidade para outras linguagens. O XLParser serve como a implementação de referência da gramática do Excel publicada no artigo “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” e suporta os conjuntos de dados de referência Enron e EUSES.
XLParser produz árvores de análise compactas, permitindo travessia, análise e transformação eficientes de fórmulas. Os desenvolvedores podem usar a classe `ExcelFormulaParser` para analisar fórmulas e extrair nomes de funções, referências e subexpressões. A classe `FormulaAnalyzer` suporta ainda operações avançadas como `ParserReferences()` para recuperar todas as referências de célula, intervalo e nomeadas. Com seu foco em pesquisa e ferramentas, o XLParser é ideal para garantia de qualidade de planilhas, refatoração de fórmulas e ferramentas educacionais. Você pode experimentar a demonstração online, instalar via NuGet ou compilar a partir do código-fonte no [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).
Começando com XLParser
XLParser está disponível via NuGet e pode ser instalado usando o Console do Gerenciador de Pacotes ou a interface NuGet do Visual Studio. A maneira mais simples é executar `Install-Package XLParser` no Console do Gerenciador de Pacotes. Alternativamente, você pode baixar a versão mais recente em [XLParser no GitHub](https://github.com/spreadsheetlab/XLParser), compilar a solução e referenciar o DLL diretamente. A biblioteca é construída sobre o framework de parser Irony e não requer dependências adicionais. Uma vez instalado, você pode começar a analisar fórmulas do Excel usando a classe `ExcelFormulaParser`. Seu método `Parse()` aceita uma string de fórmula e retorna uma árvore de análise para análise ou transformação adicional.
Instalar XLParser via NuGet
Install-Package XLParserAnálise de Fórmulas do Excel com Alta Compatibilidade
XLParser oferece uma taxa de análise bem-sucedida de 99,9% em mais de um milhão de fórmulas reais do Excel, tornando-se um dos analisadores de fórmulas C# mais confiáveis disponíveis. Foi validado nos amplamente usados conjuntos de dados de referência Enron e EUSES e foi projetado para lidar com fórmulas complexas, aninhadas e do mundo real — incluindo expressões de matriz, referências e funções. Embora o XLParser não seja excessivamente restritivo (pode analisar algumas fórmulas que o Excel rejeitaria), essa flexibilidade é intencional para casos de uso de pesquisa e análise. Os desenvolvedores podem confiar no XLParser para analisar a grande maioria das fórmulas encontradas em planilhas de produção, permitindo análises robustas de fórmulas, refatoração e fluxos de trabalho de garantia de qualidade. Sua gramática compacta garante manutenção e portabilidade entre frameworks de análise.
Analisar uma Fórmula do Excel e Inspecionar a Árvore de Análise
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());Extrair Todas as Referências de Fórmulas do Excel
O XLParser inclui a classe `FormulaAnalyzer`, que fornece métodos poderosos para analisar fórmulas analisadas. Uma de suas principais funcionalidades é `ParserReferences()`, que retorna todas as referências de célula, intervalo, intervalo nomeado e referências horizontais/verticais usadas em uma fórmula. Isso é inestimável para rastreamento de dependências, análise de impacto e ferramentas de refatoração. Por exemplo, dada uma fórmula como `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` retornará uma lista de `A1:B10`, `C12` e `NamedRange`. Isso permite que desenvolvedores criem ferramentas de auditoria de planilhas, visualizem o fluxo de dados ou detectem dependências circulares. O método funciona perfeitamente com a estrutura de árvore de análise compacta, garantindo extração rápida e precisa mesmo para fórmulas grandes.
Extrair Todas as Referências Usando o 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());
}Percorrer e Analisar Árvores de Análise
Árvores de análise do XLParser são projetadas para travessia e análise eficientes. A classe `ExcelFormulaParser` fornece métodos como `AllNodes` para iterar sobre cada nó da árvore, permitindo análise, transformação ou lógica de validação personalizadas. Os desenvolvedores podem filtrar nós por tipo (por exemplo, funções, referências, operadores) e executar operações como contar ocorrências de funções, detectar intervalos nomeados não usados ou identificar possíveis erros. O método `GetFunction()` simplifica a extração de nomes de funções de nós de chamada de função, enquanto `Print()` permite depuração rápida ou registro da estrutura de qualquer nó. Essas capacidades tornam o XLParser ideal para construir ferramentas de qualidade de planilhas, assistentes de refatoração e visualizações educacionais.
Percorrer Todos os Nós e Extrair Nomes de Funções
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 e Visualizar Árvores de Análise
XLParser integra-se estreitamente com a ferramenta GrammarExplorer da Irony para depuração interativa e visualização de árvores. Após compilar o XLParser e a solução GrammarExplorer, você pode carregar `XLParser.dll` como uma gramática e testar fórmulas em tempo real. Durante o desenvolvimento, o depurador do Visual Studio permite inspecionar nós da árvore de análise via janela de observação usando `yournode.Print(),ac`. Esse recurso acelera a compreensão de fórmulas complexas, o teste de casos limites e a validação das regras gramaticais. A estrutura compacta da árvore garante que mesmo fórmulas profundamente aninhadas permaneçam legíveis e manejáveis. Seja construindo uma ferramenta de análise de planilhas ou pesquisando o comportamento de fórmulas do Excel, o suporte de depuração do XLParser simplifica o desenvolvimento e a solução de problemas.
Depurar um Nó da Árvore de Análise no Monitor de Variáveis do Visual Studio
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac