Question

J'utilise la fonction suivante pour exporter les informations de mon DataGrid vers Excel. Mais quand on me demande si je veux sauvegarder ou exporter, cela prend trop de temps. Quelqu'un sait pourquoi / quelqu'un a eu des expériences similaires?

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();
}
Était-ce utile?

La solution

Lorsque vous examinez les performances de votre solution, il est important de réaliser que vous n'exportez pas votre DataGrid vers Excel: vous écrivez son contenu au format HTML, puis vous incitez Windows à ouvrir ce code HTML à l'aide de Exceller. Excel convertira ensuite le tableau HTML en feuille de calcul aussi bien que possible.

Le goulot d’étranglement ici est probablement le processus de conversion d’Excel: en particulier pour les grands tableaux, l’analyse HTML représente un travail fastidieux, qui implique de nombreuses conjectures lentes concernant les types de données et les conversions. Peut-être que le code HTML est encore si difficile à manipuler que son téléchargement depuis le serveur vers le client introduit également un retard notable.

Etant donné que vous ne contrôlez pas le code impliqué dans l'un de ces goulots d'étranglement, vous ne pouvez pas le supprimer beaucoup de choses, vous devez les éviter en passant à un format plus efficace, à savoir Excel natif au lieu de HTML.

Plusieurs bibliothèques .NET peuvent vous aider, commercial et gratuit . Googling autour trouvera probablement beaucoup d'autres alternatives. Veuillez noter que votre code côté serveur sera beaucoup plus impliqué: vous devrez configurer la structure / le formatage 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 également plus utile (éditable) pour vos utilisateurs que votre export HTML actuel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top