Exporter des donnees d'un datagridview vb.net vers excel

bila20 3 Messages postés lundi 6 décembre 2010Date d'inscription 11 avril 2012 Dernière intervention - 10 avril 2012 à 11:21 - Dernière réponse :  archippe mayele
- 6 nov. 2015 à 13:15
voila le code que je regler pour exporter les donnes d'un datagrid vers un fichier excel qui se trouve dans le bin de mon application mais le probleme c'est que se code affiche seulement le dernier enregistrement pouver vous maider a devlopper ce code pour afficher les donnees dans les celles precése
et merci d'avence
voila le code: v1 et un view
Dim app As New Microsoft.Office.Interop.Excel.Application
app.Workbooks.Open(System.Environment.CurrentDirectory & "\etat2.xls")
app.Visible = True
'dss.Clear()
Call connect()
Cmd.CommandText = "select N_ARRIVE,NOM_EXPD,DATE_ARRIVE,LIBELLE_DEPART from v1 where (DATE_ARRIVE between '" & Me.DateTimePicker1.Value & "' and '" & Me.DateTimePicker2.Value & "') and LIBELLE_DEPART like '" & Me.ComboBox1.Text & "'"
'Cmd.CommandText = "select N_ARRIVE,NOM_EXPD,DATE_ARRIVE,LIBELLE_DEPART from v1 "
Cmd.Connection = Cnx
Cmd.CommandType = CommandType.Text
dr = Cmd.ExecuteReader
Dim i As Integer = 0

dr.Read()
app.Cells(2, 3) = dr(3)

While dr.Read

app.Cells(6 + i, 1) = dr(0)
app.Cells(6 + i, 2) = dr(1)
app.Cells(6 + i, 3) = dr(2)
i = +1

End While

'app.Visible = True
'app.Workbooks.Add()
dr.Close()
Cnx.Close()


app.Worksheets.PrintPreview()
Afficher la suite 

Votre réponse

7 réponses

NHenry 14260 Messages postés vendredi 14 mars 2003Date d'inscription 16 septembre 2018 Dernière intervention - 10 avril 2012 à 13:07
0
Merci
Bonjour,

i = +1
C'est juste ?
i += 1
Mieux non ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
bila20 3 Messages postés lundi 6 décembre 2010Date d'inscription 11 avril 2012 Dernière intervention - 10 avril 2012 à 15:34
0
Merci
merci NHenry de me reponder
je change i=+1 par i += 1 mais c'est la meme resultat toujours il affiche le dernier enregistrement vous n'aver pas d'autre idee??
Commenter la réponse de bila20
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 10 avril 2012 à 17:29
0
Merci
Salut

ta boucle
While dr.Read
est executé ?
Commenter la réponse de cs_ShayW
cs_Le Pivert 5343 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 septembre 2018 Dernière intervention - 10 avril 2012 à 17:52
0
Merci
Bonjour,
Voici le code que j'utilise pour exporter des données d'une datagridview vers Excel. Essaie le:


  'Ajouter la réference Microsoft Excel 11.0 Object Library 
    Private Sub cmdexport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdexport.Click
        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value
        Dim i As Integer
        Dim j As Integer

        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("Feuil1")


        For i = 0 To DataGridView1.RowCount - 2
            For j = 0 To DataGridView1.ColumnCount - 1
                xlWorkSheet.Cells(i + 1, j + 1) = _
                    DataGridView1(j, i).Value.ToString()
            Next
        Next

        xlWorkSheet.SaveAs(Application.StartupPath & "\monclasseur.xls") 'enregistre dans le dossier Debug de l'application
        xlWorkBook.Close()
        xlApp.Quit()

        releaseObject(xlApp)
        releaseObject(xlWorkBook)
        releaseObject(xlWorkSheet)

        MessageBox.Show("Opération réussie," & vbNewLine & "vous trouverez votre classeur dans le dossier Debug de l'application", "Exportez vers Excel", MessageBoxButtons.OK, MessageBoxIcon.Information)

    End Sub
    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub


@+ Le Pivert
Commenter la réponse de cs_Le Pivert
bila20 3 Messages postés lundi 6 décembre 2010Date d'inscription 11 avril 2012 Dernière intervention - 11 avril 2012 à 00:49
0
Merci
merci le pivert je devloppe mon code avec les donnees de vote reponce et enfin j'arrive a resoudre mon probleme
merci a tous ce qu'on mon reponder voila le nouveau code :
Dim app As New Microsoft.Office.Interop.Excel.Application
app.Workbooks.Open(System.Environment.CurrentDirectory & "\etat2.xls")
app.Visible = True
'dss.Clear()
Call connect()
Cmd.CommandText = "select LIBELLE_DEPART from v1 where (DATE_ARRIVE between '" & Me.DateTimePicker1.Value & "' and '" & Me.DateTimePicker2.Value & "') and LIBELLE_DEPART like '" & Me.ComboBox1.Text & "'"
'Cmd.CommandText = "select N_ARRIVE,NOM_EXPD,DATE_ARRIVE,LIBELLE_DEPART from v1 "
Cmd.Connection = Cnx
Cmd.CommandType = CommandType.Text
dr = Cmd.ExecuteReader
dr.Read()
app.Cells(2, 3) = dr(0)

Dim i As Integer

Dim j As Integer
'For i = 0 To DataGridView1.RowCount - 2
' For j = 0 To DataGridView1.ColumnCount - 1
' app.Cells(6 + i, j + 1) = dr(0)
' app.Cells(6 + i, j + 2) = dr(1)
' app.Cells(6 + i, j + 3) = dr(2)
' j = j + 1
' Next
'Next
For i = 0 To DataGridView1.RowCount - 2
For j = 0 To DataGridView1.ColumnCount - 1
app.Cells(i + 6, j + 1) = _
DataGridView1(j, i).Value.ToString()
Next
Next

'app.Visible = True
'app.Workbooks.Add()
dr.Close()
Cnx.Close()
Commenter la réponse de bila20

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.