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 :

Importer CSV avec entête VB.Net


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Importer CSV avec entête VB.Net
    Bonjour à tous,
    je souhaite importer un fichier csv dans un datagridview, mais avec les particularités suivantes:
    La première ligne de mon fichier csv doit correspondre aux entêtes du datagridview
    Je ne souhaite que garder les colonnes 1,2,16,17,20,21,24,25,26 les autres doivent être masquée.
    Je cherche une solution simple.
    Pour l'instant j'arrive à importer mes données dans le datagridview mais pas à renommer les colonnes.

    Voici la première ligne de mon fichier CSV:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Matricule;Nom;Prenom;Nom Naissance;Pseudo de connexion;Mot de passe de connexion;Civilité;Téléphone Perso;Téléphone Pro;Email Perso;Email Pro;Préférence envoi courier;Adresse;Adresse suite;Code Postal;Ville;Service;Statut;Contrat;Date de naissance;Date d'entrée;Date de sortie;Situation familiale;Matricule conjoint dans entreprise;Coefficient 2014;Coefficient 2015;Coefficient 2016;Banque;Titulaire;IBAN;BIC;Autorisation de prélèvement;N° de compte
    Voici mon 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
            Dim TextFileReader As New FileIO.TextFieldParser(selectedFile)
     
            TextFileReader.TextFieldType = FileIO.FieldType.Delimited
            TextFileReader.SetDelimiters(";")
     
            Dim TextFileTable As DataTable = Nothing
     
            Dim Column As DataColumn
            Dim Row As DataRow
            Dim UpperBound As Int32
            Dim ColumnCount As Int32
            Dim CurrentRow As String()
     
            While Not TextFileReader.EndOfData
                Try
                    CurrentRow = TextFileReader.ReadFields()
                    If Not CurrentRow Is Nothing Then
     
                        ''# Check if DataTable has been created
                        If TextFileTable Is Nothing Then
                            TextFileTable = New DataTable("TextFileTable")
                            ''# Get number of columns
                            UpperBound = CurrentRow.GetUpperBound(0)
                            ''# Create new DataTable
                            For ColumnCount = 0 To UpperBound
                                Column = New DataColumn()
                                Column.DataType = System.Type.GetType("System.String")
                                'tutu = CurrentRow(ColumnCount).ToString
                                ' Column.ColumnName = CurrentRow(ColumnCount).ToString
                                Column.ColumnName = "Column" & ColumnCount
                                Column.Caption = CurrentRow(ColumnCount).ToString
                                Column.ReadOnly = True
                                Column.Unique = False
                                TextFileTable.Columns.Add(Column)
     
                            Next
                        End If
     
                        'ajout des données
     
                        Row = TextFileTable.NewRow
                        For ColumnCount = 0 To UpperBound
                            Row("Column" & ColumnCount) = CurrentRow(ColumnCount).ToString
                        Next
                        TextFileTable.Rows.Add(Row)
     
     
                    End If
    J'ai cherché un peux partout mais je ne trouve pas la solution, si quelqu'un peux m'aider...
    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monSplit() as string = Split( Matricule;Nom;Prenom;Nom Naissance;Pseudo de connexion;Mot de passe de connexion;Civilité;Téléphone Perso;Téléphone Pro;Email Perso;Email Pro;Préférence envoi courier;Adresse;Adresse suite;Code Postal;Ville;Service;Statut;Contrat;Date de naissance;Date d'entrée;Date de sortie;Situation familiale;Matricule conjoint dans entreprise;Coefficient 2014;Coefficient 2015;Coefficient 2016;Banque;Titulaire;IBAN;BIC;Autorisation de prélèvement;N° de compte, ";")
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim monSplit() as string = Split(taligne, ";")
    monSplit(1) = "matricule"
    monSplit(2) = "Nom"

    etc...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Juste pour apporter un complément, tu souhaite renommer les noms des colonnes lors de l'ouverture dans Excel (remplace A par Nom, B par matricule, etc...) ou juste attribuer les entête?

    Dans le premier cas, il suffit effectivement de découper ton CSV avec la fonction split (fournie par ekydeta) et de mettre la valeur dans tes celulles (avec une boucle par exemple, si besoin supprimer les entêtes inutiles avant ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim i As Integer
            For i = 0 To MonString.Length
                xlsfeuille.Cells(1, i+1).value = MonString(i)
            Next
    Si tu souhaite renommer tes colonnes, je passerai personnellement par un objet Column:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim cCol as Column 
     
    cCol=DataGrid1.Columns(1) 
    cCol.Caption="Nom"
    cCol=DataGrid1.Columns(2)
    cCol.Caption="Matricule" 
    [...]

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    monSplit(1) = "matricule"
    monSplit(2) = "Nom"

    etc...
    Pas tout à fait. Le premier indice est zéro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monSplit(0) = "matricule"
    monSplit(1) = "Nom"
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Tomtom31 Voir le message
    Juste pour apporter un complément, tu souhaite renommer les noms des colonnes lors de l'ouverture dans Excel (remplace A par Nom, B par matricule, etc...) ou juste attribuer les entête?

    Si tu souhaite renommer tes colonnes, je passerai personnellement par un objet Column:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim cCol as Column 
     
    cCol=DataGrid1.Columns(1) 
    cCol.Caption="Nom"
    cCol=DataGrid1.Columns(2)
    cCol.Caption="Matricule" 
    [...]
    Encore là, l'idée générale est bonne, mais le premier indice c'est en principe zéro.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    En effet, pour le Split le premier indice est 0. En revanche, pour les colonnes (dans excel) la première est la colonne 1 (la première cellule est cell(1,1)). D'où le i +1 pour le renommage des colonnes 😊

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    C'est probablement trop tard, mais j'ai pondu cela:

    http://dotnet.developpez.com/telecha...nes-a-afficher

    Sauf qu'il commence par afficher toute la table, et que je crée une table ad-hoc qui correspond à mon fichier.

    Mais bon, si cela peut servir, ce ne sera pas du temps perdu.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/06/2005, 17h00
  2. Probleme avec debuggeur Visual Net 2003
    Par 0xYg3n3 dans le forum MFC
    Réponses: 8
    Dernier message: 15/05/2005, 22h11
  3. probleme de link avec visual studio .net 2003
    Par kamal101 dans le forum MFC
    Réponses: 9
    Dernier message: 28/03/2005, 21h44
  4. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33

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