Domanda

Sto usando la funzione folowing per esportare le informazioni dal mio DataGrid a Excel. Ma quando mi chiede se voglio salvare o esportare, ci vuole troppo tempo. Qualcuno sa perché / qualcuno ha avuto esperienze simili?

void ExportToExcel3()
{
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");

    Response.Charset = "";
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView2.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();
}
È stato utile?

Soluzione

Quando osservi le prestazioni della tua soluzione, è importante rendersi conto che non stai effettivamente esportando il tuo DataGrid in Excel: stai infatti scrivendo il suo contenuto come HTML, e quindi 'ingannando' Windows per aprire quell'HTML usando Eccellere. Excel convertirà quindi la tabella HTML in un foglio di lavoro, oltre che possibile.

Il collo di bottiglia qui è molto probabilmente il processo di conversione di Excel: specialmente su tabelle di grandi dimensioni, l'analisi dell'HTML richiede molto lavoro e comporta molte congetture lente su tipi di dati e conversioni. Probabilmente, l'HTML è anche così ingombrante che il download dal server al client introduce anche un notevole ritardo.

Dato che non controlli il codice coinvolto in nessuno di questi colli di bottiglia, non c'è molto che puoi fare per eliminarli, se non evitandoli del tutto passando a un formato più efficiente, ovvero Excel nativo anziché HTML.

Esistono diverse librerie .NET che possono aiutarti in questo, sia commerciale che gratuito . Googling in giro molto probabilmente troverà anche molte altre alternative. Tieni presente che il tuo codice lato server diventerà significativamente più coinvolto: dovrai impostare la struttura / la formattazione del foglio di calcolo e scorrere il DataGrid per esportare ogni riga. Ma il risultato finale, il file XLS, sarà più compatto ed efficiente e sarà anche più utile (cioè modificabile) per i tuoi utenti rispetto all'esportazione HTML corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top