Exporter un gridview vers excel asp.net

stof8kristof - 9 août 2012 à 12:12 - Dernière réponse :  ayoub
- 20 déc. 2016 à 13:48
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.
Afficher la suite 

10 réponses

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

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

ex:
Commenter la réponse de Tupad
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 9 août 2012 à 15:18
0
Utile
Pourrais-tu nous montrer le code de ta page .aspx?
Commenter la réponse de Tupad
stof8kristof - 9 août 2012 à 15:38
0
Utile
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
---------------------------------------------
Commenter la réponse de stof8kristof
stof8kristof - 9 août 2012 à 15:57
0
Utile
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???
Commenter la réponse de stof8kristof
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 10 août 2012 à 10:50
0
Utile
La version de Microsoft office ne change rien

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

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

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.