| Precedente :: Successivo |
Autore |
Messaggio |
|
|
nuvola111 Novizio
Registrato: 10/01/08 15:12 Messaggi: 1
|
Inviato: Gio Gen 10, 2008 3:15 pm Oggetto: download file excel |
|
|
Ho anche io un problema simile....riesco a generare un file excel da una datatable, riesco a salvarmelo in locale, ma non riesco a poter far fare il download del file all'utente...forse dovrei salvare il file sul server e riprenderlo...
Aiuto!!!!!!!!!
grazie!!! |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
Inviato: Ven Gen 11, 2008 10:11 am Oggetto: |
|
|
Ciao nuvola! Innanzitutto, che linguaggio usi? C# ASP.NET? Se si, puoi usare questo semplice codice:
| Codice: |
String strPath = Server.MapPath("file.xls");
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/ms-excel";
Response.WriteFile(strPath);
Response.End();
|
Se invece usi VB, prova questo:
| Codice: |
Dim strPath as String = Server.MapPath("file.xls")
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)
Response.AddHeader("Content-Length", file.Length.ToString())
Response.ContentType = "application/ms-excel"
Response.WriteFile(strPath)
Response.End()
|
_________________ Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!
Realizzazione siti web e applicazioni ASp.NEt, C/C++, C# |
|
Top |
|
 |
bigrino Bravino
Registrato: 27/11/08 11:29 Messaggi: 14
|
Inviato: Gio Nov 27, 2008 11:31 am Oggetto: |
|
|
salve, io invece utillzndo questo codice...vorrei sapere come fare a salvare il file sul disco del server..nn vorei farlo esportare. Grazie.
SetGridLayout(ref grid);
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + report + ".xls");
Response.Charset = "";
this.EnableViewState = false;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.xls";
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(Response.Output);
grid.DataSource = dr;
grid.DataBind();
grid.RenderControl(htmlWrite);
dr.Close();
Response.End();
grazie. |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
Inviato: Gio Nov 27, 2008 1:10 pm Oggetto: |
|
|
Ciao, questo pezzo di codice che hai messo usa la response, che quindi restituisce il file all'utente. Se non vuoi farlo aprire automaticamente all'utente devi usare una filestream. _________________ Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!
Realizzazione siti web e applicazioni ASp.NEt, C/C++, C# |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
Inviato: Gio Nov 27, 2008 1:12 pm Oggetto: |
|
|
| bigrino ha scritto: |
salve, io invece utillzndo questo codice...vorrei sapere come fare a salvare il file sul disco del server..nn vorei farlo esportare. Grazie.
SetGridLayout(ref grid);
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + report + ".xls");
Response.Charset = "";
this.EnableViewState = false;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.xls";
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(Response.Output);
grid.DataSource = dr;
grid.DataBind();
grid.RenderControl(htmlWrite);
dr.Close();
Response.End();
grazie. |
Comunque, Response.ContentType = "application/vnd.xls"; cosa vuol dire? _________________ Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!
Realizzazione siti web e applicazioni ASp.NEt, C/C++, C# |
|
Top |
|
 |
bigrino Bravino
Registrato: 27/11/08 11:29 Messaggi: 14
|
Inviato: Ven Nov 28, 2008 8:46 am Oggetto: |
|
|
vuoel dire che il formato è in xls |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
|
Top |
|
 |
bigrino Bravino
Registrato: 27/11/08 11:29 Messaggi: 14
|
Inviato: Ven Nov 28, 2008 8:59 am Oggetto: |
|
|
cali1981
.....potresti essere più preciso devo togliere tutte le response?  |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
Inviato: Ven Nov 28, 2008 9:11 am Oggetto: |
|
|
Nno basta togliere il response, ma devi anche scrivere il file, servono altre classi, tipo:
myData è un array dy byte
// rileva il nome della directory e del file
string strPath = Server.MapPath("nome della driectory") + "nome del file";
// crea un nuovo file
FileStream newFile = new FileStream(strPath, FileMode.Create);
// scrivi il buffer di dati nel file
newFile.Write(myData, 0, myData.Length);
// chiude il file
newFile.Close(); _________________ Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!
Realizzazione siti web e applicazioni ASp.NEt, C/C++, C# |
|
Top |
|
 |
bigrino Bravino
Registrato: 27/11/08 11:29 Messaggi: 14
|
Inviato: Ven Nov 28, 2008 9:34 am Oggetto: |
|
|
ok..provo grazie.
cmq per il momento questo nn mi ha mia dato problemi:
Response.ContentType = "application/vnd.xls";
posso asseganre il mio datareader all'array di byte...cioè a myData?
Io prioma asseganvo alla griglia il mio datareader:
grid.DataSource = dr;
grid.DataBind();
grid.RenderControl(htmlWrite);
Grazie. |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
|
Top |
|
 |
bigrino Bravino
Registrato: 27/11/08 11:29 Messaggi: 14
|
Inviato: Ven Nov 28, 2008 9:40 am Oggetto: |
|
|
un'idea?
io ho questo datareader che vorrei salvare su disco.
Con quel codice che uso funziona....ma solo per far scaricare il file all'utente
grazie. |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
Inviato: Ven Nov 28, 2008 9:50 am Oggetto: |
|
|
Una volta fatta l'istruzione rendercontrol, prova a mettere questo:
...
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(htmlWrite.ToString());
// scrivi il buffer di dati nel file
newFile.Write(bytes, 0, bytes.Length);
// chiude il file
newFile.Close();
al posto di --- metti la aprte che ti ho fatto vedere prima sui files:
// rileva il nome della directory e del file
string strPath = Server.MapPath("nome della driectory") + "nome del file";
// crea un nuovo file
FileStream newFile = new FileStream(strPath, FileMode.Create); _________________ Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!
Realizzazione siti web e applicazioni ASp.NEt, C/C++, C# |
|
Top |
|
 |
bigrino Bravino
Registrato: 27/11/08 11:29 Messaggi: 14
|
Inviato: Ven Nov 28, 2008 10:07 am Oggetto: |
|
|
nel file excel esce scritto questo:
System.Web.UI.HtmlTextWriter
forse sbagli io qualcosa
System.IO.FileStream newFile = new System.IO.FileStream(@"c:\sigic_stampe\rino1.xls", System.IO.FileMode.Create);
grid.DataSource = dr;
grid.DataBind();
grid.RenderControl(htmlWrite);
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(htmlWrite.ToString());
newFile.Write(bytes, 0, bytes.Length);
newFile.Close();
dr.Close();
Response.End();
A parte che forse devo tolgoere qualcosa per nn farlo cmq aprire nel browser. Grazie |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
|
Top |
|
 |
|
|
|