IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

comment exporter les données de dgv vers excel


Sujet :

VB.NET

  1. #1
    En attente de confirmation mail
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 30
    Points
    30
    Par défaut comment exporter les données de dgv vers excel
    Bonjour,
    Je voudrais exporter le contenu d'un datagridview vers excel. Pourriez vous me proposer une piste qui me permettrait éventuellement de réaliser cela ?

    Merci de m'aider.

  2. #2
    Membre habitué Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Points : 183
    Points
    183
    Par défaut
    Bonjour HASSNA,
    Voila un bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
            Dim xlApp As Excel.Application
            Dim xlWork As Excel.Workbook
            Dim xlsheet As Excel.Worksheet
            Dim misvalue As Object = System.Reflection.Missing.Value
            Dim i, j As Integer
     
            xlApp = New Excel.ApplicationClass
            xlWork = xlApp.Workbooks.Add(misvalue)
            xlsheet = xlWork.Sheets("Sheet1")
     
            For i = 0 To DataGridView1.RowCount - 2
                For j = 0 To DataGridView1.ColumnCount - 1
                    xlsheet.Cells(j + 1, i + 1) = DataGridView1(i, j).Value.ToString
                Next
            Next
            xlWork.SaveAs("c:\TestDGVToExcel.xlsx")
            xlWork.Close()
            xlApp.Quit()

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2010
    Messages : 168
    Points : 55
    Points
    55
    Par défaut
    bonjour,
    essayé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     Dim AppExcel As Object
            Dim Classeur As Object
            Dim Feuille As Object
            Dim Plage As Object
            Dim I As Integer, J As Integer
     
            Try
                'démarre l'application, la rend visible
                AppExcel = CreateObject("Excel.Application")
                AppExcel.Visible = True
                Classeur = AppExcel.Workbooks.Add()
                'défini la feuille "Feuil1" comme
                'la feuille devant recevoir les données
                Feuille = Classeur.Worksheets("Feuil1")
                'définie la plage de travail (commence à la cellule A1)
                'elle est fonction du nombre de lignes sélectionnées dans
                'le DataGridView ainsi que du nombre de colonnes de ce dernier
                With Feuille
                    Plage = .Range(.Cells(1, 1), _
                                   .Cells(DataGridView1.Rows.Count + 1, _
                                          DataGridView1.Columns.Count))
                End With
                'empèche le rafraîchissement de l'écran afin d'éviter les scintillements
                AppExcel.ScreenUpdating = False
                'entêtes des colonnes
                For I = 0 To DataGridView1.Columns.Count - 1
                    Plage(1, I + 1) = DataGridView1.Columns(I).Name
                Next
                'données
                For I = 0 To DataGridView1.Rows.Count - 1
                    For J = 0 To DataGridView1.Rows(I).Cells.Count - 1
                        Plage(I + 2, J + 1) = DataGridView1.Rows(I).Cells(J).Value
                    Next
                Next
                'formatage de la plage
                With Plage
                    'ligne des entêtes en gras, centrée verticalement et horizontalement
                    .Rows(1).Font.Bold = True
                    .Rows(1).HorizontalAlignment = -4108
                    .Rows(1).VerticalAlignment = -4108
                    'cadrillage fin dans la plage et bordure plus épaisse
                    For I = 7 To 12
                        .Borders(I).LineStyle = 1 'trait continu
                        Select Case I
                            Case 7 To 10 'cadre
                                .Borders(I).Weight = -4138
                            Case 11, 12 'cadrillage
                                .Borders(I).Weight = 2
                        End Select
                    Next
                    'ajuste les colonnes au contenu
                    .EntireColumn.AutoFit()
                End With
                'rafraîchi l'écran
                AppExcel.ScreenUpdating = True
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    bon courage

  4. #4
    En attente de confirmation mail
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 30
    Points
    30
    Par défaut
    Merci de votre réponse je veux essayer cette reponse

  5. #5
    Membre actif Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Points : 279
    Points
    279
    Par défaut
    Bonjour,

    Voilà le code que j'utilise dans un de mes programmes; Je passe par une RichTextBox qui me sert de tampon. Ensuite avec un SaveFileDialog, j'export le contenu de ma RichTextBox dans un fichier CSV.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Private Sub b_exportResult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_exportResult.Click
            'Création CSV.
            'sfd_exportDataStat.Filter = "Excel|*.csv|"
            rtbx_tamponCsv.Text = tbx_titreReq.Text
            rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & vbCrLf
            rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & vbCrLf
            For i = 0 To dgv_resultatRequete.ColumnCount - 1
                rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & dgv_resultatRequete.Columns(i).Name & ";"
            Next
            rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & vbCrLf
            rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & vbCrLf
            For ligne = 0 To dgv_resultatRequete.RowCount - 1
                For colonne = 0 To dgv_resultatRequete.ColumnCount - 1
                    rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & dgv_resultatRequete.Rows(ligne).Cells(colonne).Value & ";"
                Next
                rtbx_tamponCsv.Text = rtbx_tamponCsv.Text & vbCrLf
            Next
     
            If sfd_exportDataStat.ShowDialog() = DialogResult.OK Then
                rtbx_tamponCsv.SaveFile(Replace(sfd_exportDataStat.FileName, "csv", "") & Replace(Now.Today.ToShortDateString, "/", "-") & ".csv", RichTextBoxStreamType.PlainText)
            End If
        End Sub
        Private Sub dgv_resultatRequete_DataBindingComplete(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewBindingCompleteEventArgs) Handles dgv_resultatRequete.DataBindingComplete
            b_exportResult.Enabled = True
        End Sub
    Pour chaque enregistrement, tu saute une ligne pour que le contenu de ta RichTextBox soit de ce type :

    valeur1; Valeur2;Valeur3
    Vaeur11;Valeur12;Valeur13

    Chaque ";" dis que tu passe à la colonne suivante.
    Chaque saut de ligne dis que tu passe à la ligne suivante dans excel.

    Tu peu cacher ton Richtextbox bien sûr.

Discussions similaires

  1. Exporter seulement les données de GridView vers Excel
    Par freelibre dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/05/2013, 17h07
  2. [1.x] comment exporter les données dans un fichier excell
    Par farhaenis dans le forum Symfony
    Réponses: 2
    Dernier message: 29/07/2011, 18h12
  3. comment exporter les données d'un jtable vers excel
    Par papypolo22 dans le forum NetBeans
    Réponses: 3
    Dernier message: 23/11/2010, 19h13
  4. Réponses: 3
    Dernier message: 14/09/2009, 10h56
  5. Exporter les données du gridviexw vers excel
    Par casaoui dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/06/2007, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo