Direi di fare il filtraggio come parte dell'elaborazione. La programmazione in Excel è significativamente più dolorosa e limitata rispetto a qualsiasi altra tecnologia lato server che potresti utilizzare.
CSV come formato di output è molto più facile da utilizzare rispetto a Excel e praticamente ogni linguaggio di programmazione può facilmente generare CSV senza richiedere alcuna libreria (anche la scrittura del proprio CSV dovrebbe essere possibile in circa un'ora); Se ti interessano solo i dati semplici, non ci sono formule, cartelle di lavoro a più fogli o layout, CSV dovrebbe andare bene.
Ora, a seconda delle dimensioni dell'ingresso XML, vorrei:
a) Leggere l'intero file XML in memoria, analizzarlo in un albero DOM e utilizzare XPath per estrarre le informazioni desiderate. Se la trasformazione non è banale, considera l'utilizzo di XSLT (avrai bisogno di un minimo di post-elaborazione, perché generare CSV validi con XSLT è inutilmente complicato). Poiché l'albero DOM deve essere inserito nella RAM nella sua interezza, è possibile solo per i file XML più piccoli (ad esempio fino all'intervallo di decine di megabyte).
Per documenti più grandi:
b) Usa un parser SAX per camminare sul documento, emettendo i nodi rilevanti mentre procedi. Questo è un po 'più difficile da scrivere, perché farai intrecciare input e output, ma ha il vantaggio che i requisiti di memoria sono lineari con la profondità dell'albero piuttosto che la sua dimensione totale (cioè, il parser SAX mantiene solo il percorso dalla radice del documento fino al nodo corrente in memoria, non all'intero DOM).