Exporter un gridview vers excel asp.net

Signaler
-
 ayoub -
bonjour,svp est ce que vous pouvez me donner une solution pour ce problème:
je veux exporter les donnée d'une gridview vers un fichier excel.j'au utilisé le code suivant:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim dg As GridView = GridView1
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.xls"
Response.Charset = ""
Dim SW As StringWriter = New StringWriter
Dim HTW As HtmlTextWriter = New HtmlTextWriter(SW)
dg.RenderControl(HTW)
Response.Write(SW.ToString())
Response.End()

End Sub

mais je rencontre toujours cette erreur:

<< Le contrôle 'GridView1' de type 'GridView' doit être placé dans une balise form avec runat=server >>
même si le gridview est à l’intérieur d'une balise form.

merci d'avance.

10 réponses

Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
regarde dans ton fichier .aspx qui contient le gridview.

La balise gridview doit contenir l'attribut runat="server"

ex:
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
Pourrais-tu nous montrer le code de ta page .aspx?
j'ai réglé le problème de la balise form: j'ai utilisé dans le code behind Id form1.controle(0).....

mais le fichier excel vide.
voila le code de la page:
---------------------------------------------







Page sans titre














---------------------------------------------
et voila le code behind:

----------------------------------------

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=fichierExcel.xls")
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = "application/vnd.xls"
Dim sr As StringWriter = New StringWriter
Dim HTW As HtmlTextWriter = New HtmlTextWriter(sr)
f1.Controls(0).RenderControl(HTW)
Response.Write(sr.ToString())
Response.End()

End Sub
---------------------------------------------
le problème c'est que le format de excel doit être .xls mais moi j'ai excel 2007 donc le format et .xlsx
donc comment faire???
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
La version de Microsoft office ne change rien

Essaie de remplacer la ligne
f1.Controls(0).RenderControl(HTW)

Par
f1.RenderControl(HTW)

bonjour,
voila l'erreur que je rencontre lorsque j'utilise la méthode f.renderControl(HTW):

RegisterForEventValidation ne peut être appelé que pendant Render();
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
Cet article devrait t'apporter la solution

merci bq pour votre aide.le problème est résolu grâce au fichier que vous me donnez
l'erreur que je rencontre lorsque j'utilise ton fichier
RegisterForEventValidation ne peut être appelé que pendant Render();
je veus une reponse s'il vous plait
oui la balise form a un attribut runat"server" mais le problème reste le même.et j'ai jamais rencontré ce genre de problème psq c banal mais dans ce cas illogique!!!!