Automação da geração de relatórios Excel com um agente de IA em C#

2026-08-17 10:02:18 jie zou
AI Summarize:
ChatGPT
ChatGPT
Claude
Grok
Perplexity
Quick
Quick
Concise overview
Highlights
Key takeaways
Detailed
Structured explanation
Brief
One sentence summary
Summarize |

Automate Excel report generation with an AI agent in C# -- normalize raw data, analyze anomalies, and output a management report

IA para Excel em C# significa combinar o julgamento de um modelo de linguagem com uma biblioteca real de processamento de Excel dentro de uma aplicação .NET, para que a aplicação possa mesclar, normalizar, analisar e formatar dados de planilhas a partir de instruções em linguagem natural em vez de código coluna por coluna. A parte difícil dos relatórios em Excel raramente foi desenhar o gráfico final — é transformar uma pilha de pastas de trabalho de origem inconsistentes em dados nos quais você realmente possa confiar. Com um agente de IA, você descreve a tarefa de relatório ("mescle estas 20 pastas de trabalho de lojas e sinalize as lojas cuja receita caiu mais de 30%") e recebe de volta uma pasta de trabalho formatada, não uma resposta em chat. O Spire.Agent.Office oferece ambas as partes: a compreensão de linguagem e uma camada de documento determinística que garante a geração de um arquivo .xlsx (ou PDF) real.

Navegação Rápida


1. O Real Gargalo na Automação de Relatórios do Excel

Considere a tarefa recorrente por trás da maioria das solicitações de "relatórios mensais". Uma equipe de operações administra 20 lojas regionais, e cada loja envia uma pasta de trabalho de vendas no final do mês. Em teoria, este é um único relatório. Na prática, são vinte arquivos diferentes que por acaso compartilham um padrão de nome de arquivo:

  • As colunas não coincidem. Uma loja chama o valor de Revenue, outra de Sales Amount, e uma terceira de Net Sales.
  • O layout não coincide. Uma loja coloca os meses nas colunas, outra nas linhas, e uma terceira inclui uma coluna de notas no meio.
  • Os tipos de dados não coincidem. As datas vêm como texto, os números vêm como milhares e pelo menos uma loja mescla uma linha de título no cabeçalho.

Portanto, antes que alguém possa produzir um gráfico para a gestão, um analista passa a semana abrindo arquivos, mapeando colunas, normalizando datas, procurando erros de digitação e só então verificando anomalias e montando o relatório. Nenhuma dessas tarefas faz parte da "geração de relatórios". Tudo isso é preparação de dados.

O ponto a ser internalizado: a parte difícil dos relatórios em Excel raramente é criar o gráfico final. É transformar pastas de trabalho de origem inconsistentes em dados nos quais você realmente possa confiar. Uma biblioteca de gráficos plotará dados incorretos com prazer; o que falta à equipe é um caminho confiável de arquivos de entrada brutos para uma tabela limpa e comparável. Esse caminho é exatamente onde um agente de IA muda a dinâmica.


2. O Que Muda Quando um Agente de IA Entra no Fluxo de Trabalho

A automação dessa tarefa não é nova — apenas costuma ser cara. Compare os dois fluxos de trabalho:

Automação tradicional

Inspecionar arquivos
→ mapear colunas
→ normalizar dados
→ escrever regras
→ gerar pasta de trabalho

Cada etapa antes da última é pré-definida: você escreve um mapa de colunas para cada cabeçalho conhecido, um analisador de data para cada formato conhecido e um limite para cada regra. No momento em que uma loja renomeia uma coluna ou uma regra de negócio muda, o mapa e as regras ficam incorretos, e um humano precisa intervir novamente.

Automação com agente

Descrever a tarefa de relatório
→ fornecer pastas de trabalho de origem
→ revisar o resultado

O agente lê o significado de cada pasta de trabalho em vez de uma posição fixa, portanto, o mapa de colunas e o conjunto de regras não precisam mais ser enumerados antecipadamente. O que ele remove é precisamente a parte cara: o trabalho de pré-definir um esquema e um conjunto de regras que falharão no próximo arquivo.

Spire.Agent.Office workflow: 20 heterogeneous store workbooks flow through the agent, producing a consolidated table, an anomalies sheet, and a management report

O restante deste artigo percorre esse pipeline uma vez, desde as pastas de trabalho brutas até um PDF impresso, usando o cenário das 20 lojas como exemplo principal. As seções 3 a 5 explicam o que o agente faz em cada etapa; a seção 6 fornece o código C# completo que o executa.


3. De Pastas de Trabalho Heterogêneas a um Modelo de Dados Comum

A versão do problema específica do Excel é que diferentes pastas de trabalho "parecem iguais" sem realmente ser iguais. Três lojas podem, cada uma, enviar uma tabela com quatro colunas e ainda assim não oferecer uma maneira de mesclá-las sem interpretação humana:

Loja A Loja B Loja C
Revenue Sales Amount Net Sales
Month Reporting Period Date
Units Quantity Sold Qty

Não existe um índice de coluna que as mapeie entre si, porque o mapeamento é semântico, e não posicional. Revenue, Sales Amount e Net Sales são três nomes para o mesmo conceito, e somente a compreensão do cabeçalho permite alinhá-los.

A etapa de consolidação do agente transforma esse alinhamento semântico em um único esquema:

Store / Region / SKU / UnitsSold / Revenue / Month

Ele lê cada pasta de trabalho de origem, resolve os nomes dos cabeçalhos em relação a esse modelo de destino, alinha linhas e colunas, ignora linhas duplicadas de cabeçalho e título e grava uma tabela normalizada. O desenvolvedor nunca escreve uma rotina FindColumnByHeader("Revenue") — a instrução nomeia o esquema de destino, e o agente determina o mapeamento a partir de cada arquivo.

Esta é a etapa com o maior retorno imediato, porque é a etapa que atualmente consome a maior parte do tempo do analista e quebra com mais frequência quando uma nova loja é adicionada.


4. Transformando Regras de Negócio em Análise em Linguagem Natural

Assim que os dados estão em um só lugar, a geração de relatórios precisa de julgamento, e o julgamento é onde as regras codificadas rigidamente falham. O exemplo prático usa uma regra financeira típica:

Sinalizar linhas onde a receita caiu mais de 30% ou cresceu mais de 50% em relação ao mês anterior.

Note o quanto está contido nessa frase e o quão inconveniente é cada parte em formato de código:

  • Por que 30% e 50%? Esses são limites de negócios com contexto — uma loja sazonal, um novo SKU ou uma promoção alteram o significado de "incomum". Um if (change < -0.30) codificado rigidamente trata cada loja de forma idêntica e dispara falsos alarmes devido à sazonalidade.
  • Como você altera isso? No código, você recompila e faz um novo implante (redeploy). Na instrução, o analista edita uma única frase: "caiu mais de 20%", ou "apenas para a região Leste", ou "sinalizar apenas SKUs com mais de 100 unidades vendidas".
  • Adicionar uma dimensão? Quer que a regra seja aplicada por loja e por região e por mês? Você adiciona uma cláusula à instrução, não um loop aninhado.
  • Explicar o resultado? O agente pode anexar uma coluna Cause com uma explicação provável de uma frase para cada linha sinalizada — algo que uma comparação de limite por si só nunca poderá produzir.

O princípio decorrente desta seção vale a pena ser destacado claramente:

O código define como; as instruções definem o quê.

O desenvolvedor deixa de codificar a regra e passa a descrever o resultado. A regra permanece legível, editável pelos negócios e sobrevive a uma nova loja ou a uma alteração de limite sem qualquer mudança de código.

Para um exemplo prático completo da mesma análise orientada por instruções aplicada a um fluxo de trabalho de classificação (ranking), consulte o tutorial Análise e Classificação de Pontuação de Estudantes.


5. Da Análise a um Relatório Pronto para a Gestão

Encontrar anomalias é apenas metade da geração de relatórios. O resultado ainda precisa se tornar uma pasta de trabalho que alguém possa realmente usar — a planilha do analista não é o entregável; o resumo gerencial é.

O pipeline é concluído assim:

Pastas de Trabalho Brutas
      ↓
Dados Consolidados
      ↓
Anomalias
      ↓
Resumo Gerencial
      ↓
PDF

A instrução final compõe o entregável: uma aba Summary na frente com um bloco de KPIs (receita total, melhor loja, pior loja, contagem de anomalias sinalizadas), uma tabela de tendência mensal, um gráfico de barras de receita por região e formatação pronta para impressão. Apontar a mesma instrução para um caminho .pdf exporta o relatório idêntico como PDF para distribuição, sem uma etapa de renderização separada.

O ponto a ter em mente: análise e composição são dois trabalhos diferentes, e o agente faz ambos. O trabalho do analista passa a ser revisar a lista restrita sinalizada e aprovar, em vez de reconstruir a apresentação todos os meses.


6. Construindo o Fluxo de Trabalho em C#

Todas as peças acima são acionadas por um único pipeline em C#. Configure o agente uma vez e execute três instruções em sequência: consolidar, analisar e relatar. A configuração completa — token, pacotes e conexão do projeto — está documentada passo a passo no tutorial Primeiros Passos; aqui nos concentramos no próprio fluxo de trabalho.

using System.IO;
using Spire.Xls;
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;

AIOptions options = new AIOptions {
    SpireToken = spireToken,
    WorkDir = @"C:\retail-ops\output",
    TimeoutMs = 300000
};

string[] storeFiles = Directory.GetFiles(@"C:\retail-ops\inbox", "*.xlsx");
Directory.CreateDirectory(@"C:\retail-ops\output");

1. Consolidar. Passe os 20 arquivos da caixa de entrada como anexos e nomeie o esquema de destino. A normalização da seção 3 ocorre aqui, impulsionada pela instrução em vez de qualquer mapa de colunas:

using (Workbook consolidated = new Workbook())
{
    AIResult result = consolidated.AI(options).ExecuteInstruction(
        consolidated,
        "Leia todas as pastas de trabalho de vendas regionais na caixa de entrada e mescle-as em uma única planilha. " +
        "Cada loja nomeia suas colunas de forma diferente (por exemplo, Sales vs Amount, Month vs Period); " +
        "normalize-as para um único esquema: Store, Region, SKU, UnitsSold, Revenue, Month. Ignore " +
        "linhas de cabeçalho duplicadas e salve o resultado mesclado como uma pasta de trabalho.",
        @"C:\retail-ops\output\consolidated.xlsx",
        storeFiles);

    if (result == null || !result.Success)
        throw new InvalidOperationException($"Consolidation failed: {result?.ErrorMessage}");
}

2. Analisar. Carregue o arquivo consolidado e defina a regra da seção 4 em linguagem clara. O agente adiciona uma aba Anomalies e deixa os dados de origem intocados:

using (Workbook analysis = new Workbook())
{
    analysis.LoadFromFile(@"C:\retail-ops\output\consolidated.xlsx");

    AIResult result = analysis.AI(options).ExecuteInstruction(
        analysis,
        "Adicione uma aba 'Anomalies'. Compare a Revenue de cada loja e SKU com o mês " +
        "anterior, sinalize as linhas onde a receita caiu mais de 30% ou cresceu mais de 50%, aplique " +
        "um preenchimento vermelho para quedas e um preenchimento verde para aumentos, e adicione uma coluna 'Cause' com uma " +
        "explicação provável de uma frase. Deixe as planilhas de dados originais inalteradas.",
        @"C:\retail-ops\output\analyzed.xlsx");

    if (result == null || !result.Success)
        throw new InvalidOperationException($"Analysis failed: {result?.ErrorMessage}");
}

A aba Anomalies é inserida ao lado dos dados de origem, com as linhas sinalizadas, preenchimentos e a coluna Cause aplicados pela instrução:

Example output: the consolidated data plus an Anomalies sheet with flagged rows, fills, and a Cause column

3. Gerar Relatório. Componha o resumo gerencial da seção 5 e exporte-o. O savePath por si só escolhe o formato — .xlsx aqui, .pdf para distribuição:

using (Workbook report = new Workbook())
{
    report.LoadFromFile(@"C:\retail-ops\output\analyzed.xlsx");

    AIResult result = report.AI(options).ExecuteInstruction(
        report,
        "Produza um relatório gerencial. Adicione uma aba 'Summary' na frente com um bloco de KPIs " +
        "(receita total, melhor loja, pior loja, contagem de anomalias sinalizadas), uma tabela de tendência " +
        "mensal e um gráfico de barras de receita por região. Formate-o para impressão e salve a pasta de " +
        "trabalho concluída.",
        @"C:\retail-ops\output\monthly-report.xlsx");

    if (result == null || !result.Success)
        throw new InvalidOperationException($"Report generation failed: {result?.ErrorMessage}");
}

A aba Summary é colocada na frente da pasta de trabalho, pronta para impressão ou exportação em PDF:

Example output: the finished management report with a Summary sheet, trend table, and region chart

Principais Chamadas de API

  • Workbook.AI(options) — anexa o processador de documentos de IA a um objeto de pasta de trabalho existente
  • ExecuteInstruction(doc, instruction, savePath, attachments) — executa uma etapa e grava o resultado
  • AIResult.Success / AIResult.ErrorMessage — verifica cada etapa e exibe falhas

O Que Você Escreveria Sem o Agente

Para fins de contraste, a rota de SDK tradicional para as mesmas três etapas localiza cada coluna pela string do cabeçalho, codifica rigidamente cada limite e define cada preenchimento célula por célula — e precisa de reajuste total quando uma loja renomeia uma coluna ou a regra muda:

foreach (string file in storeFiles)
{
    Workbook wb = new Workbook();
    wb.LoadFromFile(file);
    Worksheet sheet = wb.Worksheets[0];

    // Falha no momento em que uma loja nomeia a coluna como "Sales" em vez de "Revenue".
    int revenueCol = FindColumnByHeader(sheet, "Revenue");
    int storeCol   = FindColumnByHeader(sheet, "Store");

    for (int r = sheet.LastRow; r >= 2; r--)
    {
        double current = double.Parse(sheet.Range[r, revenueCol].Text);
        double prior   = double.Parse(sheet.Range[r, revenueCol + 1].Text);
        double change  = (current - prior) / prior;

        // Um limite codificado rigidamente; uma loja sazonal dispara falsos alarmes.
        if (change < -0.30) sheet.Range[r, revenueCol].Style.Color = Color.Red;
    }
    // ... depois mesclar, depois resumo, depois gráfico -- centenas de linhas por loja e por mês.
}

Before vs after: hardcoded column and threshold logic replaced by one natural-language instruction

O agente não remove a necessidade de código — ele remove a necessidade de código de mapeamento. A diferença está em onde a lógica reside: em um localizador de colunas e um limite, ou em uma frase que a equipe de negócios pode ler e editar.


7. Onde a IA Para e a Lógica da Aplicação Começa

Uma maneira mais honesta de pensar sobre essa fronteira do que uma lista do que "pode e não pode" ser feito: o agente não elimina a lógica determinística da aplicação — ele atua sobre ela.

A aplicação ainda é proprietária de tudo o que não tem a ver com a compreensão da planilha:

  • Descoberta e acesso a arquivos — localizar os arquivos da caixa de entrada, verificar permissões e prepará-los
  • Agendamento do fluxo de trabalho — quando o relatório é executado, com qual gatilho e em qual ordem
  • Controle da fonte de dados — quais arquivos são entradas autorizadas e de onde eles vêm
  • Tratamento de erros e tentativas — o que acontece quando um arquivo está ausente ou uma etapa falha
  • Aprovação final — um humano revisa as anomalias sinalizadas antes da aprovação
  • Reconciliação externa — comparar o relatório com um sistema de registro

O agente é responsável pelas partes que são genuinamente semânticas:

  • Compreensão — ler o que cada coluna realmente significa
  • Normalização — alinhar esquemas heterogêneos em um único modelo
  • Interpretação — aplicar uma regra de negócio para decidir o que é incomum
  • Transformação — transformar dados brutos em um resumo, gráfico e formatação
  • Composição — montar a pasta de trabalho final ou PDF

Essa estrutura é mais útil do que uma tabela de recursos porque indica onde aplicar seu esforço de engenharia. Mantenha a estrutura determinística no código — onde ela é testável e auditável — e entregue o trabalho semântico ao agente. Cada lado faz o que faz de melhor.


8. Adicionando IA a um Fluxo de Trabalho Excel .NET Existente

A última coisa que vale a pena tornar explícita é o quão pouco você precisa reconstruir para chegar lá. Se sua aplicação já funciona com Excel por meio do Spire.Xls, o modelo de documento que você já possui é o ponto de integração:

Workbook
   ↓
Workbook.AI(options)
   ↓
ExecuteInstruction(...)

Você não está introduzindo uma nova camada de documento ou um serviço de processamento de documentos separado. Você está adicionando uma camada de execução em linguagem natural ao objeto Workbook que já possui. O mesmo objeto que abriu, mesclou e salvou seus arquivos agora aceita uma instrução e executa o fluxo de trabalho, com o mecanismo determinístico do Excel garantindo que a saída seja um arquivo real e bem formado — células mescladas, formatos de número e gráficos intactos. O mesmo padrão ExecuteInstruction se estende a documentos do Word e PDF — veja Revisão de Contratos com IA em C#.

Essa é a proposta de valor para um desenvolvedor Excel, declarada nos termos em que você já pensa: não "adotar uma plataforma de IA", mas sim "ensinar a pasta de trabalho que você já usa a aceitar instruções." Quando uma loja renomeia uma coluna ou a equipe financeira altera a regra de sinalização, a correção é uma edição em uma frase, e não a reconstrução do pipeline de documentos.


9. FAQ

Preciso enviar meus dados do Excel para a nuvem?

Não necessariamente. O Spire.Agent.Office é executado a partir de sua própria aplicação, portanto o SDK e o processamento de documentos permanecem dentro do seu ambiente; seus arquivos não são enviados para um serviço de terceiros para armazenamento ou conversão. Para analisar o conteúdo, a IA precisa dos dados relevantes, e estes são enviados ao modelo para processamento — uma etapa inerente a qualquer fluxo de trabalho de IA. Se você implantar seu próprio modelo em sua rede local, o conteúdo permanecerá inteiramente em sua infraestrutura. Se você se conectar por meio de uma API de modelo hospedado, como OpenAI ou Azure OpenAI, o conteúdo relevante será transmitido a esse provedor pela rede de acordo com sua configuração.

Quais formatos do Excel são suportados?

A entrada abrange arquivos de pasta de trabalho padrão, como XLSX e XLS, e o agente lê a pasta de trabalho diretamente em seu formato nativo. A saída pode ser salva como XLSX, XLS, CSV, PDF ou HTML, para que o relatório final possa ir direto para um arquivo ou lista de distribuição.

Ele pode substituir minha revisão financeira ou operacional?

Não. O agente automatiza a leitura, normalização, análise e formatação — as horas que um analista gasta todos os meses —, mas a aprovação final permanece com um revisor humano. Trate as anomalias sinalizadas como uma lista curta a ser verificada, não como uma decisão já tomada.

Qual a diferença entre isso e colar meus dados no ChatGPT?

Um modelo de chat pode informar o que parece incomum, mas não pode colocar essa resposta em uma pasta de trabalho estilizada com uma planilha de resumo, formatação condicional e um gráfico, nem pode exportar um PDF. Um agente de IA para Excel combina o julgamento do modelo de linguagem com uma camada determinística do Excel, para que a saída seja um arquivo real e bem formado que sua equipe possa abrir e distribuir.

Posso usar meu próprio modelo de IA?

Sim. O Spire.Agent.Office suporta integração flexível de modelos de IA e é compatível com as principais infraestruturas de IA, incluindo APIs de modelos hospedados e modelos implantados de forma privada. Você pode apontar o agente para seu próprio endpoint. Para dúvidas sobre quais provedores são suportados em sua implantação, entre em contato conosco.

Pronto para Automatizar seus Relatórios no Excel?

A consolidação, a análise de anomalias e a geração de relatórios são as formas mais rápidas de obter valor: aponte o agente para a caixa de entrada, descreva o relatório e obtenha uma pasta de trabalho ou PDF formatado. Siga o tutorial Primeiros Passos para executar seu primeiro fluxo de trabalho de planilha em .NET.

Leitura Adicional