Esporta in Excel..codice giusto?

giovedì 25 ottobre 2007 - 08.56

Hope Profilo | Junior Member

Salve ragazzi,sto tendando disperatamente di mettere mani su un'applicazione web già esistente(calcolate che non ho mai avuto a che fare con la programmazione).
Mi ritrovo una parte dove si devono esportare in excel la ricerca effettuata in un DB.
Potete dirmi se questa parte di codice è esatta per l'esportazione in excel?

SUB ClickToExport(sender As Object, e As ImageClickEventArgs)

DataGrid2.DataSource = Session("myDV")
DataGrid2.Databind()

Response.ContentType = "application/vnd.ms-excel"

' Remove the charset from the Content-Type header.
Response.Charset = ""

' Turn off the view state.
Me.EnableViewState = False

DIM tw AS NEW System.IO.StringWriter()
DIM hw AS NEW System.Web.UI.HtmlTextWriter(tw)

' Get the HTML for the control.
DataGrid2.RenderControl(hw)
' Write the HTML back to the browser.
Response.Write(tw.ToString())
' End the response.
Response.End()

END SUB


E questa è la parte del codice in HTML

<td
bgcolor="#cccc99"
align="Center">
<asp:ImageButton
id="ibExport"
AlternateText="Esporta in Excel"
ImageUrl="/images/save.gif"
runat="server"
OnClick="ClickToExport" />
</td>


Secondo voi c'è qualcosa di sbagliato?perchè a me non funziona :-(
grazie mille a tutti...

Saluti

amelix Profilo | Expert

Quello che genera è una tabella html...
Se imposti il contentype a text/html vedrai il risultato corretto... (che NON è quello che vuoi tu)

Bisogna vedere che cosa hai a disposizione sul server...
Hai installato excel?
Se si usa le sue librerie...
Andrea - http://www.MelisWeb.eu/

pozzoli.samuele Profilo | Senior Member

Amelix... Mi tocca correggerti! Lo sai che se fai una tabella in html, rinomini il file ottenuto in xls, excel lo apre?

Concordo pienamente che sia molto meglio usare i componenti di excel! Ma in teoria dovrebbe funzionare anche questo codice!

Mi è capitato per caso di fare questa scoperta perchè una delle dipendenti dove lavoro, mi ha combinato proprio questa fetenzia... Non volevo crederci! Non sai quanto ci ho messo per scoprirlo.

Ti allego un html di prova da provare a rinominare! Giuro che funziona. nmon ci volevo credere... .

Proverei, invece... a mettere un response.clear() all'inizio.

amelix Profilo | Expert

Terrificante!
Mi lascia alquanto perplesso!

Ma se nella tabella ci metto css, js o altre vaccate che fa?

PAURA!!!! FUORI DA OGNI CONTROLLO!

Quindi nel caso dell'esempio forse basta questa riga:
>Response.AddHeader("Content-Disposition", "attachment; filename=reportFile.xls;")

Cmq grazie dell'informazione!
Andrea - http://www.MelisWeb.eu/

pozzoli.samuele Profilo | Senior Member

>Terrificante!
>Mi lascia alquanto perplesso!

Immagina a me, che me lo sono trovato fatto da una che mi ha chiamato terrorizzata perchè il monitor era diventato nero (spegnimento del monitor, tipo dopo 3 ore...)!

>
>Ma se nella tabella ci metto css, js o altre vaccate che fa?
>
>PAURA!!!! FUORI DA OGNI CONTROLLO!

In teoria dovrebbe farlo chi sa cosa fa, o sbaglio? La dimostrazione è quello che è successo a me. Probabilmente un slvataggio fatto sbagliato e un tentativo improbabile di correzione, che effettivamente funziona... :P

>
>Quindi nel caso dell'esempio forse basta questa riga:
>>Response.AddHeader("Content-Disposition", "attachment; filename=reportFile.xls;")
>
>Cmq grazie dell'informazione!
>Andrea - http://www.MelisWeb.eu/

Di niente! Se posso...

Hope Profilo | Junior Member

Grazie ragazzi,no Excel non c'è,non credevo che fosse utile ...
smanetto un pò con i vostri consigli e poi vi dico


Saluti

pozzoli.samuele Profilo | Senior Member

Accetta la risposta che ti ha aiutato di più!

Hope Profilo | Junior Member

Il problema comunque mi sono accorto che era un'altro...
Però grazie a voi l'ho capito....
grazie ragazzi....


Saluti
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5