Exporter un gridview vers excel asp.net

stof8kristof - Modifié le 4 août 2021 à 19:33
 A - 4 août 2021 à 19:08
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

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

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

ex:
0
Tupad
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
9 août 2012 à 15:18
Pourrais-tu nous montrer le code de ta page .aspx?
0
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
---------------------------------------------
0
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???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tupad
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
Modifié le 4 août 2021 à 19:34
La version de Microsoft office ne change rien

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

Par
f1.RenderControl(HTW)
0
stof8kristof
10 août 2012 à 11:39
bonjour,
voila l'erreur que je rencontre lorsque j'utilise la méthode f.renderControl(HTW):

RegisterForEventValidation ne peut être appelé que pendant Render();
0
Tupad
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
10 août 2012 à 13:12
Cet article devrait t'apporter la solution
0
thanks
0
stof8kristof
10 août 2012 à 13:38
merci bq pour votre aide.le problème est résolu grâce au fichier que vous me donnez
0
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
0
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!!!!
-1