Logo UGIdotNET

Inviare un risultato in forma di file Excel, usando solo ASPX.

Quante volte ti è venuto in mente che sarebbe utile, o comunque ti hanno chiesto di, fornire dal sito un file EXCEL contenete il risultato di una query?
È anche un argomento di cui si parla tanto anche sul forum.
Allora, di cosa hai bisogno dal lato del server per produrre un file Excel?: nulla, basta poter modificare gli headers http.

Estendo l'idea usando la seguente tabella:
 

Nome Cognome e-mail
Mario Rossi mario@rossi.it
Tizio Caio tcaio@sempronio.com

Bene, adesso seleziona tutte le celle della tabella, poi COPIA, apri Excel e INCOLLA sul worksheet.
Il risultato ottenuto è più o meno quello che faremo qui, con la differenza che invieremo al client "un file di Excel" vero, che potrà quindi essere salvato su disco o direttamente visualizzato in Excel, usando nient'altro che ASPX "puro".

Il codice d'esempio

Per mantenere ridotte le dimensioni del tip mi atterrò all'essenziale, invitandoti a leggere l'articolo sugli Headers Http di Barzaghi. Chiaramente questo esempio è applicabile a qualsiasi cosa restituisca una normale TABLE html.
In pratica, prima di inviare l'html al client, si dovrà "azzerare" la cache nel Response (CODE-1), quindi modificare gli headers (CODE-2), ed infine inviare il risultato al browser (CODE-3).
Fine.

' CODE-1
Response.Clear() 

' CODE-2
Response.AddHeader("Content-Disposition", "attachment; filename=esempio.xls") 
Response.ContentType = "application/vnd.ms-excel"


' CODE-3
Response.Write(" <TABLE> <TBODY> <TR> <TH>esempio</TH> <TH>file excel</TH></TR> <TR> <TD>ciao mondo</TD> <TD>123456</TD></TR></TBODY></TABLE>") 
Response.End

Conclusioni

Questo è solo un punto di partenza, a te espanderlo, ad esempio, per la parte relativa alle funzioni di Excel o utilizzando l'XML al posto dell'HTML. Poi, mi raccomando, condividila con i tuoi soci! (come ha fatto RR qui, grazie!)

Autore: Aldo Prinzi
Data: 19 novembre 2003
Ultimo aggiornamento: 28 settembre 2005
Categorie: 

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185