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 :

Export Datagrid vers CSV Problemes de headers


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Points : 27
    Points
    27
    Par défaut Export Datagrid vers CSV Problemes de headers
    Bonjour a tous,

    je cherche a exporter le contenu d'un datagridview (donnees et headers) vers un fichier de type csv. Sur le net, j'ai pu trouver ce morceau de code qui fonctionne tres bien pour ce qui concerne les donnees mais je ne parviens toujours pas a exporter les headers des colonnes de mon datagrid.

    Pourriez vous m'aiguiller?

    merci

    Anthony

    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
     
    Private Sub SaveGridDataInFile(ByRef fName As String)
     
            Dim cellvalue As String = ""
     
            Dim rowLine As String = ""
     
            Try
     
                'Fill CSV with the Data from the DataGridView
                Dim objWriter As New System.IO.StreamWriter(fName, True)
     
                For j As Integer = 0 To (DataGridView1.Rows.Count - 2)
     
                    For i As Integer = 0 To (DataGridView1.Columns.Count - 1)
     
                        If Not TypeOf DataGridView1.CurrentRow.Cells.Item(i).Value Is DBNull Then
     
                            cellvalue = DataGridView1.Item(i, j).Value.ToString
     
                        Else
     
                            cellvalue = ""
     
                        End If
     
                        rowLine = rowLine & cellvalue & ","
     
                    Next i
     
                    objWriter.WriteLine(rowLine)
     
                    rowLine = ""
     
                Next j
     
                ' Free the Object
                objWriter.Dispose()
                objWriter.Close()
     
                MsgBox("Export Successfull")
     
            Catch e As Exception
     
                MessageBox.Show("Error occured while writing to the file." + e.ToString(), "Error")
     
            Finally
     
                FileClose(1)
     
            End Try
     
        End Sub

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Hello

    le concept de header n'est pas normalisé dans un fichier csv, mais la coutume veux que l'on interpréte la première ligne en tant que entête.


    Il suffit donc de faire une boucle sur les Columns et de récupérer le headertext avant de faire la boucle sur tes rows (les données).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Points : 27
    Points
    27
    Par défaut
    Bonjour et merci,

    Aurais tu un exemple sous la main car je vois le concept mais je ne parviens pas a le mettre en pratique?

    Merci

    Ci dessous, la reponse que j'ai pu trouver a mon probleme. Je ne pense pas que ce soit la plus simple mais elle fonctionne

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
        Private Sub ExportGridDataInFile(ByRef fileName As String)
     
            Dim Headervalue As String = ""
     
            Dim Headerline As String = ""
     
            Dim cellvalue As String = ""
     
            Dim rowLine As String = ""
     
            Try
     
                'Fill CSV with the Header name from the DataGridView
                Dim objWriter As New System.IO.StreamWriter(fileName, True)
     
                For i = 1 To DataGridView1.Columns.Count - 1
     
                    Headervalue = DataGridView1.Columns(i).Name.ToString
     
                    Headerline = Headerline & Headervalue & ","
     
                Next i
     
                objWriter.WriteLine(Headerline)
     
                'Fill CSV with the Data from the DataGridView
                For j As Integer = 0 To (DataGridView1.Rows.Count - 2)
     
                    For i As Integer = 0 To (DataGridView1.Columns.Count - 1)
     
                        If Not TypeOf DataGridView1.CurrentRow.Cells.Item(i).Value Is DBNull Then
     
                            cellvalue = DataGridView1.Item(i, j).Value.ToString
     
                        Else
     
                            cellvalue = ""
     
                        End If
     
                        rowLine = rowLine & cellvalue & ","
     
                    Next i
     
                    objWriter.WriteLine(rowLine)
     
                    rowLine = ""
     
                Next j
     
                ' Free the Object
                objWriter.Dispose()
                objWriter.Close()
     
                MsgBox("Export Successfull")
     
            Catch e As Exception
     
                MessageBox.Show("Error occured while writing to the file." + e.ToString(), "Error")
     
            Finally
     
                FileClose(1)
     
            End Try
     
        End Sub
    Si vous avez des idees et suggestions pour ameliorer le code surtout n'hesitez pas.

    merci

    Anthony

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Ci dessous, la reponse que j'ai pu trouver a mon probleme. Je ne pense pas que ce soit la plus simple mais elle fonctionne
    Ca fonctionne et ça met pas 3 plombes?

    Alors c'est nickel non?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 675
    Points : 1 177
    Points
    1 177
    Par défaut
    Bonjour,
    Moi, je ne vois pas mieux que de boucler deux fois comme te l'a suggéré sinople.
    Par contre j'aurais mis le bool à False, pour ne pas empiler les mêmes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim objWriter As New System.IO.StreamWriter(fileName, False)
    A moins que ça soit voulu...
    Enfin, il doit te manquer la 1ière entête de colonne, DataGridView1.Columns.Count étant de base 0, donc écrire plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 0 To DataGridView1.Columns.Count - 1

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Points : 27
    Points
    27
    Par défaut
    Oui chrismonoye, merci pour tes deux conseils. Effectivement ce n'etait pas voulu

    Bye

    Anthony

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Export oracle vers csv
    Par MikeM dans le forum SQL
    Réponses: 5
    Dernier message: 11/02/2008, 14h11
  2. exportation datagrid vers excel
    Par solid_sneak06 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 10/10/2007, 17h06
  3. Export Datagrid vers Excel
    Par DocCoinCoin dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/04/2007, 00h06
  4. [SQL] exportation php vers csv
    Par yveslens dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/02/2007, 07h06
  5. export état vers word problème sur l'en-tête
    Par bucasso dans le forum Access
    Réponses: 7
    Dernier message: 08/09/2006, 16h51

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