+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [ASP.Net]Esportazioni In excel

  1. #1
    sanfra non è in linea Scolaretto
    Post
    373

    [ASP.Net]Esportazioni In excel

    Salve sto facendo un programma in asp.net 2.0 con visual web developer 2005 express edition e in questo programma è prevista l'esportazione di una lista di nominativi in un file excel,sapreste dirmi come si può fare?

    Devo usare le api di window oppure c'è qualche libreria che si può implementare?

    Volevo dirvi che lo stoi facendo con il c#

    Grazie ancora

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...ma la lista di nominativi ti è servita per fare il bind per esempio di una gridview?..
    ...perchè in tal caso puoi ottenere come response un foglio di tipo excel...in questo modo:
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
    Response.Charset = string.Empty;
    Response.Cache.SetCacheability(HttpCacheability.No Cache);
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    myDataGrid.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();

    ...oppure usare più o meno lo stesso modo ma costruirti la stringa da passare all'oggetto response

  3. #3
    sanfra non è in linea Scolaretto
    Post
    373
    Allora io ho questi dati in una daabase e con il clik del pulsante denominato esporta che mi esporta i veri dati!

    Mi spieghi meglio come posso fare?

    Grazie

  4. #4
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...allora...nel precedente post dicevo, se per caso nella tua pagina hai una gridview che usi per mostrare questi dati allora basta che usi il codice che ti ho postato..quindi nell'evento del tuo pulsante dopo aver fatto il bind della gridview utilizzi il metodo RenderControl per ottenere l'html ed utilizzare la Response....
    se invece nella tua pagina hai solo un pulsante che fa la get dal db(quindi recuperi i dati dal db) allora puoi fare una cosa del genere:

    //Dopo aver popolato una DataTable con i dati del db
    if (dt.Rows.Count > 0)
    {
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
    Response.Charset = string.Empty;
    Response.Cache.SetCacheability(HttpCacheability.No Cache);
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append( "<table>");
    foreach (DataRow r in dt.Rows)
    {
    sb.Append("<tr>");
    foreach (DataColumn col in dt.Columns)
    sb.Append("<td>" + r[col].ToString() + "</td>");
    sb.Append("</tr>");
    }
    sb.Append("</table>");
    htmlWrite.Write(sb);
    Response.Write(stringWrite.ToString());
    Response.End();

    ...spero che adesso sia un pò più chiaro

  5. #5
    Luogo
    Lazio
    Post
    1,597
    Blogs
    21
    Quote Originariamente inviato da sanfra Visualizza il messaggio
    ...
    ho questi dati in una daabase e con il clik del pulsante denominato esporta che mi esporta i veri dati!


    come posso fare?

    Grazie
    hai solo l'imbarazzo della scelta

    Excel Export dataset - Cerca con Google
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  6. #6
    sanfra non è in linea Scolaretto
    Post
    373
    Devi scusarmi se sono molto tonto per capire determinate cose, ma ho iniziato a lavorare in asp.net solo due giorni fa, visto che vengo da molti anni di programmazione php e C++,e come tu ben sai in php l'esportazione dei dati avviene in modo diverso.
    cmq se posso chiederti un ultimo aiutino, perchè l'ho provato ma non funziona.
    Mi spiego meglio ho un pulsante che fa una ricerca dei dati e nella gridview mi da il risultato di questa ricerca.

    dopo io metto un altro pulsante con il nome Esporta e qui inserisco il codice postato gentilmente da te(e ti ringrazio) però mi dà il file ma vuoto;


    Posso sapere in cosa sto sbagliando?

    Cmq volevo ringraziare anche SSPINTUX che mi ha fatto capire che se digito in italiano quello che lui ha scritto in inglese non troverò mai niente di interessante!

    Grazie

  7. #7
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...il file ti risulta vuoto oppure ti compare un errore del genere?
    "Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server"
    ...nel primo caso controlla che la gridview sia visibile, ad ogni modo posta il codice che hai scritto...
    ....nel secondo caso devi aggiungere questo codice:
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
    questo perchè sembra essere un bug:
    Feedback: RenderControl doesn't work for GridView
    ...oppure puoi usare questo fix per aggirare la cosa:

    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
    Response.Charset = string.Empty;
    Response.Cache.SetCacheability(HttpCacheability.No Cache);
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    HtmlForm form = new HtmlForm();
    this.Controls.Add(form);
    form.Controls.Add(GridView1);
    form.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();

    ...in pratica aggiungiamo dinamicamente alla collection dei controls della pagina un form html nel quale inseriamo la gridview...a questo punto estrapoliamo l'html solo del form e non dell'intera pagina...
    Ultima modifica di SignIn; 28-07-2007 12:45 

  8. #8
    Luogo
    Lazio
    Post
    1,597
    Blogs
    21
    Quote Originariamente inviato da sanfra Visualizza il messaggio
    .....
    Cmq volevo ringraziare anche SSPINTUX che mi ha fatto capire che se digito in italiano quello che lui ha scritto in inglese non troverò mai niente di interessante!

    Grazie
    non so cosa tu abbia fatto o digitato o cosa tu veda sul tuo monitor
    ,ma sul mio tra i vari risultati ci sono anche questi link:

    http://www.dotnetjohn.com/articles.aspx?articleid=36

    Export a DataSet to Microsoft Excel without the use of COM objects - The Code Project - .NET

    ...e se non è quello che cercavi.... pazienza.
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  9. #9
    sanfra non è in linea Scolaretto
    Post
    373
    Innanzittutto grazie per tutto l'aiuto che mi state dando(SSPINTUX,SignIN),anche se inizio a scoraggiarmi un pò,perchè anche con quest'ultimo codice che mi è avete postato mi dà un errore("RegisterForEventValidation può essere chiamato solo durante l'esecuzione di Render()");

    Pensate che sia un errore mio?


    Però non mi sembra anche perchè ho copiato di sana pianta il codice.

    PS(per sspintux):
    Volevo dire che se io digito la frase "Esportazione dataset in excel" in un qualsiasi motore di ricerca non mi darà mai i risultati che io ho trovato con la tua definizione e che ho naturalmente aggiungo con piacere nei miei preferiti!

    GRazie ancora

  10. #10
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...ma scusa puoi inserire il codice che usi sia per fare il bind sia per l'export...cioè quale codice hai usato?
    ...la tua datagrid fa paging e sort sulle colonne?
    ...hai provato ad aggiungere l'override del metodo VerifyRenderingInServerForm?

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi