Exportation datagrid vers excel

Signaler
Messages postés
5
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
4 mars 2009
-
Messages postés
12
Date d'inscription
lundi 14 avril 2008
Statut
Membre
Dernière intervention
28 mai 2009
-
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

Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

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
Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

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
Messages postés
5
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
4 mars 2009

Merci pour tes rep mais je suis sous VB6
Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

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
Messages postés
5
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
4 mars 2009

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.
Messages postés
7
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
4 mars 2008

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
Messages postés
38
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
19 mars 2008

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
Messages postés
38
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
19 mars 2008

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
Messages postés
12
Date d'inscription
lundi 14 avril 2008
Statut
Membre
Dernière intervention
28 mai 2009

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
Messages postés
91
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
23 juin 2009

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!
Messages postés
12
Date d'inscription
lundi 14 avril 2008
Statut
Membre
Dernière intervention
28 mai 2009

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
Messages postés
91
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
23 juin 2009

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
Messages postés
91
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
23 juin 2009

de plus le fichier excel ne veux plus s'ouvrir la ligne :

xl.workbooks.Add()

bloque et je ne sais pas pourquoi!
Messages postés
91
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
23 juin 2009

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
Messages postés
12
Date d'inscription
lundi 14 avril 2008
Statut
Membre
Dernière intervention
28 mai 2009

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 !!!!!!!!!