2009-07-30 9 views
2

J'utilise la fonction suivante pour exporter les informations de mon DataGrid vers Excel. Mais quand il me demande si je veux enregistrer ou exporter, cela prend trop de temps. Quelqu'un sait pourquoi/quelqu'un a des expériences similaires?Comment accélérer l'exportation de .NET DataGrid vers Excel?

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(); 
} 

Répondre

4

Lorsque l'on regarde les performances de votre solution, il est important de se rendre compte que vous exportez pas réellement votre DataGrid vers Excel: vous êtes en fait écrire son contenu en HTML, puis « duper » Windows dans l'ouverture de ce HTML en utilisant Excel. Excel convertira alors la table HTML dans une feuille de calcul aussi bien que possible. Le goulot d'étranglement ici est probablement le processus de conversion d'Excel: en particulier sur les grandes tables, l'analyse du code HTML demande beaucoup de travail, impliquant beaucoup de conjectures sur les types de données et les conversions. Éventuellement, le HTML est même si lourd que le téléchargement du serveur au client introduit également un retard notable. Comme vous ne contrôlez pas le code associé à l'un de ces goulets d'étranglement, vous ne pouvez rien faire pour les éliminer, si ce n'est en les évitant en passant à un format plus efficace, à savoir Excel natif au lieu de HTML.

Plusieurs bibliothèques .NET peuvent vous aider, commercial et free. Googler autour trouvera probablement beaucoup d'autres alternatives aussi bien. Veuillez noter que votre code côté serveur deviendra beaucoup plus impliqué: vous devrez configurer la structure/mise en forme de la feuille de calcul et parcourir le DataGrid pour exporter chaque ligne. Mais le résultat final, le fichier XLS, sera plus compact et efficace, et sera aussi plus utile (c'est-à-dire éditable) pour vos utilisateurs que votre exportation HTML actuelle.

Questions connexes