
AI per Excel in C# significa abbinare la capacità di valutazione di un modello linguistico a una reale libreria di elaborazione Excel all'interno di un'applicazione .NET, in modo che l'applicazione possa unire, normalizzare, analizzare e formattare i dati del foglio di calcolo a partire da istruzioni in linguaggio naturale invece di codice colonna per colonna. La parte difficile del reporting Excel raramente è stata il disegno del grafico finale: è trasformare una serie di cartelle di lavoro di origine incoerenti in dati di cui ci si possa effettivamente fidare. Con un agente AI descrivi l'attività di reporting ("unisci queste 20 cartelle di lavoro dei negozi e segnala i negozi il cui fatturato è sceso di oltre il 30%") e ottieni in cambio una cartella di lavoro formattata, non una risposta di chat. Spire.Agent.Office fornisce entrambe le metà: la comprensione del linguaggio e un livello documentale deterministico che garantisce l'uscita di un vero file .xlsx (o PDF).
Navigazione rapida
- Da cartelle di lavoro eterogenee a un modello dati comune
- Trasformare le regole aziendali in analisi in linguaggio naturale
- Dall'analisi a un report pronto per la direzione
- Creazione del flusso di lavoro in C#
- FAQ
1. Il vero collo di bottiglia nell'automazione dei report Excel
Prendiamo il compito ricorrente alla base della maggior parte delle richieste di "reporting mensile". Un team operativo gestisce 20 negozi regionali e ogni negozio invia una cartella di lavoro sulle vendite a fine mese. In teoria si tratta di un solo report. In pratica sono venti file diversi che condividono per caso una struttura nel nome del file:
- Le colonne non corrispondono. Un negozio chiama la cifra
Revenue, un altroSales Amount, un terzoNet Sales. - Il layout non corrisponde. Un negozio inserisce i mesi nelle colonne, un altro nelle righe, un terzo aggiunge una colonna di note nel mezzo.
- I tipi di dati non corrispondono. Le date arrivano come testo, i numeri arrivano come migliaia e almeno un negozio unisce una riga di titolo nell'intestazione.
Quindi, prima che chiunque possa produrre un grafico per la direzione, un analista trascorre la settimana ad aprire file, mappare colonne, normalizzare date, cercare refusi e solo dopo verificare le anomalie e assemblare il report. Niente di tutto questo fa parte della "generazione del report". È tutta preparazione dei dati.
Il punto da comprendere a fondo: la parte difficile del reporting Excel raramente è la creazione del grafico finale. È trasformare cartelle di lavoro di origine incoerenti in dati di cui ci si possa effettivamente fidare. Una libreria di grafici traccerà felicemente dati errati; ciò che manca al team è un percorso affidabile dai file grezzi ricevuti a una tabella pulita e confrontabile. Quel percorso è esattamente dove un agente AI cambia le regole del gioco.
2. Cosa cambia quando un agente AI entra nel flusso di lavoro
L'automazione di questo compito non è una novità, è solo normalmente costosa. Confrontiamo i due flussi di lavoro:
Automazione tradizionale
Ispeziona i file
→ mappa le colonne
→ normalizza i dati
→ scrivi le regole
→ genera la cartella di lavoro
Ogni passaggio prima dell'ultimo è predefinito: si scrive una mappatura delle colonne per ogni intestazione nota, un parser di date per ogni formato noto e una soglia per ogni regola. Nel momento in cui un negozio rinomina una colonna o cambia una regola aziendale, la mappatura e le regole diventano errate e l'intervento umano torna ad essere necessario.
Automazione con agente
Descrivi l'attività di reporting
→ fornisci le cartelle di lavoro di origine
→ rivedi il risultato
L'agente legge il significato di ciascuna cartella di lavoro anziché basarsi su una posizione fissa, quindi la mappatura delle colonne e l'insieme di regole non devono più essere enumerati in anticipo. Ciò che rimuove è precisamente la parte più onerosa: il lavoro di predefinire uno schema e un insieme di regole che si interromperanno al file successivo.

Il resto di questo articolo esamina la pipeline dall'inizio alla fine, dalle cartelle di lavoro grezze a un PDF stampato, utilizzando lo scenario dei 20 negozi come esempio pratico. Le sezioni da 3 a 5 spiegano cosa fa l'agente in ciascuna fase; la sezione 6 fornisce il codice C# completo che la gestisce.
3. Da cartelle di lavoro eterogenee a un modello dati comune
La versione del problema specifica per Excel è che cartelle di lavoro diverse "sembrano uguali" senza esserlo davvero. Tre negozi possono inviare ciascuno una tabella con quattro colonne e non offrire comunque alcun modo di unirle senza l'interpretazione umana:
| Negozio A | Negozio B | Negozio C |
|---|---|---|
| Revenue | Sales Amount | Net Sales |
| Month | Reporting Period | Date |
| Units | Quantity Sold | Qty |
Non esiste un indice di colonna che le mappi l'una sull'altra, perché la mappatura è semantica, non posizionale. Revenue, Sales Amount e Net Sales sono tre nomi per lo stesso concetto, e solo la comprensione dell'intestazione consente di allinearli.
La fase di consolidamento dell'agente trasforma quell'allineamento semantico in un unico schema:
Store / Region / SKU / UnitsSold / Revenue / Month
Legge ogni cartella di lavoro di origine, risolve i nomi delle intestazioni rispetto a quel modello di destinazione, allinea righe e colonne, salta le righe di intestazione e titolo duplicate e scrive una tabella normalizzata. Lo sviluppatore non deve mai scrivere una routine FindColumnByHeader("Revenue"): l'istruzione specifica lo schema target e l'agente elabora la mappatura da ciascun file.
Questa è la fase con il massimo ritorno immediato, perché è quella che attualmente richiede più tempo all'analista e che si blocca più spesso quando si aggiunge un nuovo negozio.
4. Trasformare le regole aziendali in analisi in linguaggio naturale
Una volta che i dati sono raccolti in un unico posto, il reporting richiede valutazione, ed è proprio nella valutazione che le regole hardcoded falliscono. L'esempio in esame utilizza una tipica regola finanziaria:
Segnala le righe in cui il fatturato è sceso di oltre il 30% o è cresciuto di oltre il 50% rispetto al mese precedente.
Notate quanti elementi sono racchiusi in quella frase e quanto sia complessa ciascuna parte se tradotta in codice:
-
Perché il 30% e il 50%? Sono soglie aziendali legate a un contesto: un negozio stagionale, un nuovo SKU o una promozione modificano il significato di "insolito". Una condizione hardcoded
if (change < -0.30)tratta ogni negozio allo stesso modo e genera falsi allarmi sulla stagionalità. - Come si modifica? Nel codice, occorre ricompilare ed eseguire nuovamente il deployment. Nell'istruzione, l'analista modifica semplicemente una frase: "sceso di oltre il 20%", oppure "solo per la regione Est", oppure "segnala solo gli SKU con più di 100 unità vendute".
- Aggiungere una dimensione? Si desidera applicare la regola per negozio e per regione e per mese? Si aggiunge una clausola all'istruzione, non un ciclo annidato.
-
Spiegare il risultato? L'agente può aggiungere una colonna
Causecon una probabile spiegazione in una sola frase per ciascuna riga segnalata — qualcosa che un semplice confronto di soglie non potrebbe mai produrre.
Il principio che emerge da questa sezione merita di essere enunciato chiaramente:
Il codice definisce il come; le istruzioni definiscono il cosa.
Lo sviluppatore smette di codificare la regola e inizia a descrivere il risultato. La regola rimane leggibile, modificabile dal business e sopravvive all'aggiunta di un nuovo negozio o a un cambio di soglia senza richiedere modifiche al codice.
Per un esempio completo ed esercitato della stessa analisi basata su istruzioni applicata a un flusso di lavoro di graduatoria, consultare il tutorial sull'Analisi e Classificazione dei Punteggi degli Studenti.
5. Dall'analisi a un report pronto per la direzione
Trovare le anomalie è solo metà del lavoro di reporting. Il risultato deve comunque diventare una cartella di lavoro che qualcuno possa effettivamente utilizzare: il foglio di calcolo dell'analista non è il deliverable finale; lo è il riepilogo per la direzione.
La pipeline si completa in questo modo:
Cartelle di lavoro grezze
↓
Dati consolidati
↓
Anomalie
↓
Riepilogo per la direzione
↓
PDF
L'istruzione finale compone il documento finale: un foglio Summary all'inizio con un blocco KPI (fatturato totale, miglior negozio, peggior negozio, conteggio delle anomalie segnalate), una tabella con il trend mensile, un grafico a barre del fatturato per regione e una formattazione pronta per la stampa. Indirizzando la stessa istruzione su un percorso .pdf si esporta l'identico report in formato PDF per la distribuzione, senza alcuna fase di rendering separata.
Il concetto chiave da ricordare: l'analisi e la composizione sono due compiti diversi e l'agente li esegue entrambi. Il lavoro dell'analista diventa la revisione della selezione di elementi segnalati e la relativa approvazione, anziché la ricostruzione del report ogni mese.
6. Creazione del flusso di lavoro in C#
Tutti i componenti sopra descritti sono gestiti da una sola pipeline C#. È sufficiente configurare l'agente una volta e poi eseguire tre istruzioni in sequenza: consolida, analizza, rendiconta. La configurazione completa (token, pacchetti e collegamento del progetto) è documentata passo dopo passo nel tutorial Guida introduttiva; qui ci concentriamo sul flusso di lavoro stesso.
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. Consolida. Passa i 20 file della cartella inbox come allegati e indica lo schema di destinazione. La normalizzazione descritta nella sezione 3 avviene qui, guidata dall'istruzione anziché da una mappatura delle colonne:
using (Workbook consolidated = new Workbook())
{
AIResult result = consolidated.AI(options).ExecuteInstruction(
consolidated,
"Leggi ogni cartella di lavoro delle vendite regionali nella cartella inbox e uniscile in un unico foglio di lavoro. " +
"Ogni negozio denomina le colonne diversamente (ad esempio Sales rispetto ad Amount, Month rispetto a Period); " +
"normalizzale in un unico schema: Store, Region, SKU, UnitsSold, Revenue, Month. Salta " +
"le righe di intestazione duplicate e salva il risultato unito come cartella di lavoro.",
@"C:\retail-ops\output\consolidated.xlsx",
storeFiles);
if (result == null || !result.Success)
throw new InvalidOperationException($"Consolidation failed: {result?.ErrorMessage}");
}
2. Analizza. Carica il file consolidato ed esprimi la regola descritta nella sezione 4 in linguaggio naturale. L'agente aggiunge un foglio Anomalies e lascia inalterati i dati di origine:
using (Workbook analysis = new Workbook())
{
analysis.LoadFromFile(@"C:\retail-ops\output\consolidated.xlsx");
AIResult result = analysis.AI(options).ExecuteInstruction(
analysis,
"Aggiungi un foglio 'Anomalies'. Confronta il fatturato (Revenue) di ciascun negozio e SKU rispetto al mese " +
"precedente, segnala le righe in cui il fatturato è sceso di oltre il 30% o è cresciuto di oltre il 50%, applica " +
"un riempimento rosso ai cali e un riempimento verde agli aumenti, e aggiungi una colonna 'Cause' con " +
"una probabile spiegazione in una sola frase. Lascia invariati i fogli dati originali.",
@"C:\retail-ops\output\analyzed.xlsx");
if (result == null || !result.Success)
throw new InvalidOperationException($"Analysis failed: {result?.ErrorMessage}");
}
Il foglio Anomalies viene affiancato ai dati di origine, con le righe segnalate, i riempimenti e la colonna Cause applicati dall'istruzione:

3. Rendiconta. Componi il riepilogo per la direzione descritto nella sezione 5 ed esportalo. Il solo parametro savePath determina il formato — .xlsx in questo caso, .pdf per la distribuzione:
using (Workbook report = new Workbook())
{
report.LoadFromFile(@"C:\retail-ops\output\analyzed.xlsx");
AIResult result = report.AI(options).ExecuteInstruction(
report,
"Produci un report per la direzione. Aggiungi un foglio 'Summary' all'inizio con un blocco KPI " +
"(fatturato totale, miglior negozio, peggior negozio, conteggio delle anomalie segnalate), una tabella " +
"del trend mensile e un grafico a barre del fatturato per regione. Formattalo per la stampa e salva " +
"la cartella di lavoro completata.",
@"C:\retail-ops\output\monthly-report.xlsx");
if (result == null || !result.Success)
throw new InvalidOperationException($"Report generation failed: {result?.ErrorMessage}");
}
Il foglio Summary viene posizionato all'inizio della cartella di lavoro, pronto per la stampa o l'esportazione in PDF:

Chiamate API principali
-
Workbook.AI(options)— allega il processore di documenti AI a un oggetto workbook esistente -
ExecuteInstruction(doc, instruction, savePath, attachments)— esegue una fase e scrive il risultato -
AIResult.Success/AIResult.ErrorMessage— verifica ciascuna fase ed evidenzia gli errori
Cosa bisognerebbe scrivere senza l'agente
Per un confronto, l'approccio SDK tradizionale per le stesse tre fasi individua ciascuna colonna tramite la stringa dell'intestazione, imposta ogni soglia nel codice e definisce ogni riempimento cella per cella — richiedendo la ricalibrazione di tutto quando un negozio rinomina una colonna o la regola cambia:
foreach (string file in storeFiles)
{
Workbook wb = new Workbook();
wb.LoadFromFile(file);
Worksheet sheet = wb.Worksheets[0];
// Fallisce nel momento in cui un negozio chiama la colonna "Sales" invece di "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;
// Una soglia hardcoded; un negozio stagionale genera falsi allarmi.
if (change < -0.30) sheet.Range[r, revenueCol].Style.Color = Color.Red;
}
// ... poi unione, poi riepilogo, poi grafico -- centinaia di righe per negozio e per mese.
}

L'agente non elimina la necessità di codice — elimina la necessità di codice di mappatura. La differenza sta in dove risiede la logica: in un rilevatore di colonne e una soglia, oppure in una frase che il business può leggere e modificare.
7. Dove l'AI si ferma e inizia la logica dell'applicazione
Un modo più realistico di considerare il confine rispetto a un elenco di ciò che "può e non può fare": l'agente non elimina la logica deterministica dell'applicazione — si posiziona al di sopra di essa.
L'applicazione gestisce comunque tutto ciò che non ha a che fare con la comprensione del foglio di calcolo:
- Individuazione e accesso ai file — individuare i file della cartella inbox, verificare i permessi e prepararli
- Pianificazione del flusso di lavoro — quando viene eseguito il report, con quale trigger e in quale ordine
- Controllo delle fonti dati — quali file sono input autorizzati e da dove provengono
- Gestione degli errori e tentativi di ripristino — cosa succede quando un file è mancante o una fase fallisce
- Approvazione finale — un operatore umano esamina le anomalie segnalate prima dell'approvazione
- Riconciliazione esterna — confronto del report con un sistema di registrazione di riferimento
L'agente gestisce le parti genuinamente semantiche:
- Comprensione — lettura del reale significato di ciascuna colonna
- Normalizzazione — allineamento di schemi eterogenei in un unico modello
- Interpretazione — applicazione di una regola aziendale per decidere cosa è insolito
- Trasformazione — conversione dei dati grezzi in un riepilogo, un grafico e formattazione
- Composizione — assemblaggio della cartella di lavoro finale o del PDF
Questa impostazione è più utile di una tabella delle funzionalità perché indica dove concentrare lo sforzo ingegneristico. Mantenete la struttura deterministica nel codice — dove è testabile e verificabile — e affidate il lavoro semantico all'agente. Ciascuna parte fa ciò in cui riesce meglio.
8. Aggiungere l'AI a un flusso di lavoro Excel .NET esistente
L'ultimo aspetto che vale la pena esplicitare è quanto poco sia necessario ricostruire per raggiungere questo risultato. Se la vostra applicazione funziona già con Excel tramite Spire.Xls, il modello documentale che già possedete rappresenta il punto di integrazione:
Workbook
↓
Workbook.AI(options)
↓
ExecuteInstruction(...)
Non state introducendo un nuovo livello documentale o un servizio di elaborazione documenti separato. State aggiungendo un livello di esecuzione in linguaggio naturale all'oggetto Workbook che già possedete. Lo stesso oggetto che aprirà, unirà e salverà i vostri file accetta ora un'istruzione ed esegue il flusso di lavoro, con il motore Excel deterministico che garantisce che l'output sia un file reale e ben formato — celle unite, formati numerici e grafici compresi. Lo stesso modello ExecuteInstruction si estende ai documenti Word e PDF — vedere Revisione dei contratti con AI in C#.
Questa è la proposta di valore per uno sviluppatore Excel, espressa nei termini in cui già ragiona: non "adottare una piattaforma AI", ma "insegnare alla cartella di lavoro che già si utilizza a ricevere istruzioni". Quando un negozio rinomina una colonna o il team finanziario modifica la regola di segnalazione, la soluzione consiste nella modifica di una frase, non nella ricostruzione della pipeline documentale.
9. FAQ
Devo inviare i miei dati Excel al cloud?
Non necessariamente. Spire.Agent.Office viene eseguito direttamente dalla tua applicazione, quindi l'SDK e l'elaborazione dei documenti rimangono all'interno del tuo ambiente; i tuoi file non vengono caricati su un servizio di terze parti per l'archiviazione o la conversione. Per analizzare i contenuti, l'AI necessita dei dati pertinenti, che vengono inviati al modello per l'elaborazione — un passaggio intrinseco di qualsiasi flusso di lavoro AI. Se distribuisci un tuo modello sulla tua rete locale, il contenuto rimane interamente all'interno della tua infrastruttura. Se ti colleghi tramite un'API di un modello ospitato come OpenAI o Azure OpenAI, i contenuti pertinenti vengono trasmessi a tale provider tramite la rete in base alla tua configurazione.
Quali formati Excel sono supportati?
L'input supporta i file di cartella di lavoro standard come XLSX e XLS e l'agente legge la cartella di lavoro direttamente nel suo formato nativo. L'output può essere salvato come XLSX, XLS, CSV, PDF o HTML, consentendo di inviare il report finale direttamente ad un archivio o a un elenco di distribuzione.
Può sostituire la revisione finanziaria o operativa?
No. L'agente automatizza la lettura, la normalizzazione, l'analisi e la formattazione — le ore che un analista dedica ogni mese —, ma l'approvazione finale rimane a carico di un revisore umano. Le anomalie segnalate vanno considerate come un elenco di elementi da verificare, non come una decisione già presa.
In che modo questo differisce dall'incollare i miei dati in ChatGPT?
Un modello di chat può indicare cosa appare insolito, ma non può inserire tale risposta in una cartella di lavoro formattata con un foglio di riepilogo, formattazione condizionale e un grafico, né può esportare un PDF. Un agente AI per Excel unisce la capacità di valutazione del modello linguistico a un livello Excel deterministico, in modo che l'output sia un file reale e ben formato che il team può aprire e distribuire.
Posso utilizzare un mio modello AI?
Sì. Spire.Agent.Office supporta l'integrazione flessibile con modelli AI ed è compatibile con le principali infrastrutture AI, comprese le API di modelli ospitati e modelli distribuiti privatamente. È possibile indirizzare l'agente verso il proprio endpoint. Per domande relative ai provider supportati nella propria distribuzione, contattaci.
Pronto ad automatizzare i tuoi report Excel?
Consolidamento, analisi delle anomalie e generazione di report sono i punti in cui ottenere valore più rapidamente: indirizza l'agente sulla cartella inbox, descrivi il report e ottieni una cartella di lavoro o un PDF formattato. Segui il tutorial Guida introduttiva per eseguire il tuo primo flusso di lavoro su fogli di calcolo in .NET.
Ulteriori letture
- Tutorial sull'automatizzazione dell'analisi e classificazione dei punteggi degli studenti -- un flusso di lavoro Excel che l'agente esegue dall'inizio alla fine
- Revisione dei contratti con AI in C# -- lo stesso modello basato su istruzioni applicato a documenti Word e PDF
- Panoramica del prodotto Spire.Agent.Office -- SDK con agente AI per ogni formato di documento Office