Exportation datagrid vers excel

solid_sneak06 Messages postés 5 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 4 mars 2009 - 8 oct. 2007 à 21:09
dodofolie Messages postés 12 Date d'inscription lundi 14 avril 2008 Statut Membre Dernière intervention 28 mai 2009 - 25 mai 2009 à 23:43
Bonjour,
j'ai du mal à exporter mes données datagrid vers excel, voici un code que j'ai trouvé sur un site et que normalement doit marcher mais il marche pas chez moi
<!-- BEGIN TEMPLATE: bbcode_code -->Dim i, j, k, l AsInteger
OnErrorGoTo errxcel
Dim xlo AsObject
Set xlo = CreateObject("Excel.Application")
DoEvents
xlo.Visible = True
xlo.workbooks.Add
i = rsProv1.RecordCount
j = DataGrid1.Columns.Count
For k = 0To j - 1
       xlo.workbooks(1).sheets(1).Cells(l + 1, k + 1) = DataGrid1.Columns(k).Caption
Next k
l = 0
rsProv1.MoveFirst
DoWhileNot rsProv1.EOF
For k = 0To j - 1
       DataGrid1.Col = k
       xlo.workbooks(1).sheets(1).Cells(l + 2, k + 1) = DataGrid1.Text
Next k
rsProv1.MoveNext
l = l + 1
Loop
ExitSub
errxcel:
MsgBox "Excel not found"
 
 <!-- END TEMPLATE: bbcode_code -->je sais pas pourquoi ca marche pas, il ouvre justel'excel pas plus et bien sur j'ai le message d'erreur "excel not found" . pourquoi? est ce qu'il a quelque chose à modifier au niveau des préférences ou quoi exactement.
Help les amis

15 réponses

GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
8 oct. 2007 à 22:47
Hello,

Plus simplement encore : http://webman.developpez.com/articles/aspnet/aspnet2excel/
C'est ce que j'utilise et ça marche partout ça :)

Gérôme GUILLEMIN
Auteur du langage FBSL
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
8 oct. 2007 à 23:01
Re,
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

' On efface les éventuelles données déjà dans la mémoire tampon
Response.Clear()

' On place tout ce qui est destiné au client dans la mémoire tampon
Response.Buffer = True

' On définit le type d'informations renvoyée, ici des données au format Excel
Response.ContentType = "application/vnd.ms-excel"

' On efface le jeu de caractères actuellement défini
Response.Charset = ""

' On instancie deux objets qui vont nous permettre de récupérer les données du DataGrid :
' le StringWriter et l'HtmlTextWriter
Dim monStringWriter As StringWriter = New StringWriter
Dim monHtmlTextWriter As HtmlTextWriter = New HtmlTextWriter(monStringWriter)

' On extrait le contenu du DataGrid dans l'HtmlTextWriter
monDG.RenderControl(monHtmlTextWriter)

' On copie le contenu extrait dans la mémoire tampon
Response.Write(monStringWriter.ToString())

' On ferme "le flux" de données et envoie les données au client
Response.End()

EndSub

Gérôme GUILLEMIN
Auteur du langage FBSL
0
solid_sneak06 Messages postés 5 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 4 mars 2009
8 oct. 2007 à 23:04
Merci pour tes rep mais je suis sous VB6
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
8 oct. 2007 à 23:17
Bah, j'ai lu 'datagrid', j'ai pensé à .NET tout simplement, vu que VB6 n'était nullement indiqué !
Donc ton truc c'est de générer coté serveur un datagrid vers un excel ?
Si oui, alors tu fais du code dans un ActiveX que tu déploies ensuite dans IIS, apres via une page ASP tu peux invoquer l'appel de conversion Datagrid2Excel et rebalancer coté client les datas sous la forme d'une response HTML de type "application/vnd.ms-excel"


Gérôme GUILLEMIN
Auteur du langage FBSL
0

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

Posez votre question
solid_sneak06 Messages postés 5 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 4 mars 2009
8 oct. 2007 à 23:54
Je m'excuse c'est ma faute. Merci pour ta reponse mais c'est trop compliqué pour moi ca; le code que j'ai mis au debut est simple et doit marcher mais je sais pas pourquoi il fonctionne pas.


merci quand meme.
0
sadnak Messages postés 7 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 4 mars 2008
4 mars 2008 à 13:20
j'ai utilisé ton code en enlevant tout ce qui me derangeait et ça a marché.


partie a enlever (gestion d'erreur)



OnError...


et
la fin apres le Loop.
ExitSub
errxcel:
MsgBox "Excel not found"

Sadnak
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
11 mars 2008 à 21:13
Bonjour ,

Je viens d'utliser le code :


Private Sub cmdImprimer_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim xlo As Object
Set xlo = CreateObject("Excel.Application")


DoEvents
xlo.Visible = True
xlo.workbooks.Add
i = rsProv1.RecordCount
j = DataGrid1.Columns.Count
For k = 0 To j - 1
       xlo.workbooks(1).sheets(1).Cells(l + 1, k + 1) = DataGrid1.Columns(k).Caption
Next k
l = 0
rsProv1.MoveFirst
Do While Not rsProv1.EOF
For k = 0 To j - 1
       DataGrid1.Col = k
       xlo.workbooks(1).sheets(1).Cells(l + 2, k + 1) = DataGrid1.Text
Next k
rsProv1.MoveNext
l = l + 1
Loop


End Sub

Et j'ai enlever la gestion des erreurs mon problème, je suis débutante, ça bloque à la ligne:
i = rsProv1.RecordCount

Le message d'erreur est: Run-time error 424 object required

Que dois-je faire?

Merci de votre aide.
Kat40
0
kat40 Messages postés 38 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 19 mars 2008
13 mars 2008 à 20:09
J'ai trouvé rs....vraiment débutante,

Mon problème, ma boucle fonctionne pas, seulement le premiere ligne de données, ma ligne d'entête est ok s'incrit et à l'infinit??

Private Sub cmdImprimer_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim xlo As Object




Dim cnx As New ADODB.Connection
Dim rst As New ADODB.Recordset
cnx.ConnectionString = "Provider=SQLOLEDB;Data Source=TEST;Initial Catalog=CaisseDCN;User ID=ssssss;Password=test;"
cnx.Open
 
Set xlo = CreateObject("Excel.Application")
rst.Open "SELECT * FROM ", cnx
DoEvents
xlo.Visible = True
xlo.workbooks.Add
i = rst.RecordCount
j = DataGrid1.Columns.Count
For k = 0 To j - 1
       xlo.workbooks(1).sheets(1).Cells(l + 1, k + 1) = DataGrid1.Columns(k).Caption
Next k
l = 0
rst.MoveFirst
Do While Not rst.EOF
For k = 0 To j - 1
       DataGrid1.Col = k
       xlo.workbooks(1).sheets(1).Cells(l + 2, k + 1) = DataGrid1.Text
Next k
rst.MoveNext
l = l + 1
Loop

Kat40
0
dodofolie Messages postés 12 Date d'inscription lundi 14 avril 2008 Statut Membre Dernière intervention 28 mai 2009
25 mai 2009 à 02:10
Salut tt le monde bein voila mon code pour le meme sujet
je veux exporter des données a partir d'un datagridview en excel 
g utilisé ce code et la feuille excel s'affiche
mai les données ne s'affichent pas
l'ereur qui apparait du coté du vs2008 est comme suit l'index est hors limites sur cette ligne :
xl.cells(l + 1, j + 1) = DataGridView1.Rows(l).Cells(c).Value

Bein voila mon code en general Svp aidezzz mwa

Private







Sub

Button1_Click(


ByVal

sender


As

System.Object,


ByVal

e


As

System.EventArgs)


Handles

Button1.Click



Dim

c, j


As





Integer








Dim

xl


As





New





Object


xl = CreateObject(





"Excel.application"



xl.visible =



True


xl.workbooks.Add()








For

c = 0


To

DataGridView1.Columns.Count - 1xl.cells(c + 1, 1) = DataGridView1.Columns(c).name



Next








For

l


As





Integer

= 0


To

DataGridView1.Rows.Count - 1



For

c = 0


To

DataGridView1.Rows.Count - 1xl.cells(l + 1, j + 1) = DataGridView1.Rows(l).Cells(c).Value



Next

c



Next

l



End





Sub
0
erokage Messages postés 91 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 23 juin 2009
25 mai 2009 à 08:10
Merci dodofolie !
je travail sur vb 2008 et ton code fonctionne, (ce que je n'ai pas réussi a faire jusqu'à maintenant) le seul problème est qu'il ne m'affiche pas tout mon datagrid,
je ne comprend pas tout ton code en espérant que tu aura se message!
0
dodofolie Messages postés 12 Date d'inscription lundi 14 avril 2008 Statut Membre Dernière intervention 28 mai 2009
25 mai 2009 à 11:49
salut erokage bein oui j'ai le méme probleme sur excel il m'affiche pas tt le datagrid just une colone et c'était ca ma question
bein mon code consiste a parcourir le datagrid view
et mettre le non de la colunms (1er boucle) ds l'excel
et la 2eme boucle(ou yaa ereur) mettre les données sur excel mes ca marche pass alors si ta une idée
alors n'hesite pas a m'aideez
 merciii a ts
0
erokage Messages postés 91 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 23 juin 2009
25 mai 2009 à 13:29
Il faut que je règle ce problème aujourd'hui alors tavaillon ensemble !
J'ai essayé de retoucher le programme mais rien y fait de plus je suis un nauvice dans le visual basic j'ai commencer lundi
0
erokage Messages postés 91 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 23 juin 2009
25 mai 2009 à 13:31
de plus le fichier excel ne veux plus s'ouvrir la ligne :

xl.workbooks.Add()

bloque et je ne sais pas pourquoi!
0
erokage Messages postés 91 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 23 juin 2009
25 mai 2009 à 17:12
Je me suis débrouillé et j'ai trouvé ce petit code qui fonctionne très bien sur vb 2008 :

Dim xl As New Object

xl = CreateObject("Excel.application")



xl.visible = True

xl.workbooks.Add()


For x As Integer = 0 To DataGridView1.Rows.Count - 1
For y As Integer = 0 To DataGridView1.ColumnCount - 1

xl.cells(x + 1, y + 1) = DataGridView1.Rows(x).Cells.Item(y).Value.ToString

Next y
Next x

Comme quoi, rien ne vaux un algo sur papier!
Merci a tous
0
dodofolie Messages postés 12 Date d'inscription lundi 14 avril 2008 Statut Membre Dernière intervention 28 mai 2009
25 mai 2009 à 23:43
Désolé erokage de n'avoir pas pu te répondre avantt


Bein cet aprém j'ai essayé de modifier mon code et a la fin ca a tré bien marché


bein j'espere que c'eslt le meme cas pour toi !


 


et merciiii !!!!!!!!!










 


 


 


 
0
Rejoignez-nous