2009-08-17 6 views
0

Je développe une application où je veux afficher un jeu de données dans la vue DataGrid pour l'utilisateur. Maintenant, l'utilisateur veut télécharger les données dans le DataGridView dans un format excel. Comment puis-je le faire?enregistrer le jeu de données dans Excel et permettre à l'utilisateur de le télécharger dans la machine client

1) dois-je écrire l'ensemble de données dans Excel et le sauvegarder avant que l'utilisateur ne télécharge le fichier?

2) Puis-je utiliser un lien hypertexte et définir le chemin du fichier enregistré dans le serveur sur la propriété hyper-lien hRef, afin que l'utilisateur puisse cliquer et télécharger le fichier?

J'utilise C# ASP.net 2.0

S'il vous plaît aider!

Répondre

1

pas besoin d'enregistrer le fichier au sever utiliser le code suivant, va créer le fichier à la volée:

Public Shared Sub DataTableToExcel(ByVal dt As DataTable, ByVal FileName As String 
    HttpContext.Current.Response.Clear() 
    HttpContext.Current.Response.Write(Environment.NewLine) 
    For Each row As DataRow In dt.Rows 
    For i As Integer = 0 To dt.Columns.Count - 1 
     HttpContext.Current.Response.Write(row(i).ToString().Replace(";", String.Empty) + ";") 
    Next 

    HttpContext.Current.Response.Write(Environment.NewLine) 
    Next 

    HttpContext.Current.Response.ContentType = "application/ms-excel" 
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName + ".xls") 
    HttpContext.Current.Response.[End]() 
End Sub 
+0

ce que vous suggérez ici est un format CSV. Ce format est un peu plus difficile qu'impliqué dans le code ci-dessus, donc vous voudrez peut-être juste regarder de plus près ... –

1

vous pouvez utiliser ce code simple à réaliser

StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 

    string attachment = "attachment; filename=SummaryReport" + DateTime.Now.ToString() + ".xls"; 

    Response.ClearContent(); 
    Response.AddHeader("content-disposition", attachment); 
    Response.ContentType = "application/ms-excel"; 


    grd.RenderControl(htw); 

    Response.Write(sw.ToString()); 
    Response.End(); 
+0

en enregistrant le fichier en .xls n'écrira pas le fichier au format excel je suppose.C'est comme ouvrir un texte fichier avec Excel – Jebli

+0

vous pouvez ouvrir soit vous pouvez enregistrer le fichier avec ce code .. plz correspondre le code avec celui-ci. –

+0

Je l'ai vérifié sur ma machine il fonctionne bien. –

1

sera fais le. Vous pouvez voir les exemples ASP.NET (C# et VB) here et télécharger un essai gratuit here.

Avertissement: Je possède SpreadsheetGear LLC