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 ce fichier text dans une datagridview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut importer ce fichier text dans une datagridview
    Bonjour,
    Je cherche comment remplir les données d'un mon fichier texte dans une datagridview
    a partir de ce code de sauvegarde
    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
    Using Dilaoge As New SaveFileDialog
              Dilaoge.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
              If Dilaoge.ShowDialog() = Windows.Forms.DialogResult.OK Then
                  Dim NomFechiers As String = Dilaoge.FileName
                  Dim SW As StreamWriter = File.CreateText(NomFechiers)
                  Dim total = (From x As DataGridViewRow In DGView.Rows Select CDbl(x.Cells(4).Value)).Sum
                  SW.WriteLine("" & DGView.RowCount & "" & Today.ToLongDateString & "" & FormatNumber(total))
                  Dim C1, C2, C3, C4 As String
                  For i As Integer = 0 To DGView.Rows.Count - 1
                      C2 = (DGView.Rows(i).Cells(2).Value.ToString().PadLeft(5, "0") & "")
                      C3 = (DGView.Rows(i).Cells(3).Value.ToString() & "")
                      C4 = (DGView.Rows(i).Cells(4).Value.ToString() & "")
                      C1 = (DGView.Rows(i).Cells(1).Value.ToString().PadLeft(27))
                      SW.Write(C2 & "" & C3 & "" & GetFormatNumber(C4) & "" & C1)
                      SW.WriteLine("")
                  Next
                  SW.Close()
                  MessageBox.Show("saved")
              End If
          End Using

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Je crois que ce que tu demandes n'est pas possible parce que si je lis bien ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C2 = (DGView.Rows(i).Cells(2).Value.ToString().PadLeft(5, "0") & "")
    C3 = (DGView.Rows(i).Cells(3).Value.ToString() & "")
    C4 = (DGView.Rows(i).Cells(4).Value.ToString() & "")
    C1 = (DGView.Rows(i).Cells(1).Value.ToString().PadLeft(27))
    SW.Write(C2 & "" & C3 & "" & GetFormatNumber(C4) & "" & C1)
    il n'y a aucune séparation entre certaines données (ou s'il y a des espaces, ils peuvent disparaître avec des données plus grandes) : tu complètes tes champs avec des "" (doubles guillemets sans rien entre eux).
    Peux-tu envoyer un extrait (ou un screenshot) du fichier ouvert avec Notepad ?

    ...

  3. #3
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si le fichier texte est convenablement délimité, ceci devrait être pas si pire.

    Sinon, tu commences par ouvrir ton fichier texte, et tu le délimites (point-virgule, virgule ou tabulation).

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    bonjour
    le premier ligne c'est un resumé
    C1= nom prenon = 27 positions
    C2= N de compte
    C3= clé
    C4= Net à payer = 13 positions

    C2 = (DGView.Rows(i).Cells(2).Value.ToString().PadLeft(5, "0") & "")
    C3 = (DGView.Rows(i).Cells(3).Value.ToString() & "")
    C4 = (DGView.Rows(i).Cells(4).Value.ToString() & "")
    C1 = (DGView.Rows(i).Cells(1).Value.ToString().PadRight(27))
    SW.Write(C2 & "" & C3 & "" & GetFormatNumber(C4) & "" & C1)
    SW.WriteLine("")

    en fichiers texte
    124579990000002544433azouz benali
    124579= N de compte
    99= cle
    0000002544433= Net à payer(25444,33) c'esl la finction GetFormatNumber qui suprime la virgule
    azouz benali= le nom prenom

    et merci bq

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Le code suivant devrait répondre à ta question :

    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 FichierEntree As New StreamReader("D:\Tmp\ABED\FichierALire.TXT")
            Dim Uneligne As String
     
            Dim C1 As String
            Dim C2 As String
     
            Dim C3 As String
            Dim C4 As String
     
            Do Until FichierEntree.Peek = -1
                'Utiliser la ligne  
                Uneligne = FichierEntree.ReadLine()
                C2 = Uneligne.Substring(0, 5)
                C3 = Uneligne.Substring(6, 2)
                C4 = Uneligne.Substring(8, 13)
                C1 = Uneligne.Substring(21)
                ' Mettre dans le DataGridView .....
                MessageBox.Show(C2 & " " & C3 & " " & C4 & " " & C1) ' pour test
            Loop
    J'ai testé sur un fichier réalisé selon tes indications et dont voici le contenu :

    124579990000002544433azouz benali
    124012970000001234533Phil Rob
    123456780000000987433Azerty Qwarto



    Cordialement,

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    merci bq
    mais comment réaliser en datagridview
    et au même temps je veux que mon code
    éviter de lire le premier ligne de mon fichiers texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SW.WriteLine("" & DGView.RowCount & "" & Today.ToLongDateString & "" & FormatNumber(total))

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Voici le code complété :

    La 1ère ligne est lue et rien n'est fait de ses valeurs, normalement inutiles. A toi de compléter s'il y a quelque chose à en faire.

    Les colonnes du DGView sont remplies selon les indices que tu as attribués aux Cells dans ton code de départ. S'il il a une correction à faire, il ne peut s'agir que d'une seule unité (1 devient 0, 2 devient 1, ...).

    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
            Dim FichierEntree As New StreamReader("D:\Tmp\ABED\FichierALire.TXT")
            Dim Uneligne As String
     
            Dim C1 As String
            Dim C2 As String
     
            Dim C3 As String
            Dim C4 As String
            Uneligne = FichierEntree.ReadLine() ' Lecture de la 1ère ligne
            ' Utiliser la 1ère ligne si nécessaire, voir exemples avec C1, C2, C3 et C4 pour savoir comment extraire les données.
     
            'Lecture des autres lignes et remplissage du DGView
     
            Dim IndiceLigneDGV As Integer = 0
     
            Do Until FichierEntree.Peek = -1
                'Utiliser la ligne  
                Uneligne = FichierEntree.ReadLine()
                C2 = Uneligne.Substring(0, 5)
                C3 = Uneligne.Substring(6, 2)
                C4 = Uneligne.Substring(8, 13)
                C1 = Uneligne.Substring(21)
                ' Mettre dans le DataGridView .....
                DGView.Item(1, IndiceLigneDGV).Value = C1
                DGView.Item(2, IndiceLigneDGV).Value = C2
                DGView.Item(3, IndiceLigneDGV).Value = C3
                DGView.Item(4, IndiceLigneDGV).Value = C4
                IndiceLigneDGV += 1
            Loop
     
            FichierEntree.Close()
    Bon travail,

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    merci beaucoup
    comment en peu utiliser
    PadRight
    PadLeft
    dans ce code

  9. #9
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Tu utilisais déjà PadLeft dans ton code de sauvegarde : C2 = (DGView.Rows(i).Cells(2).Value.ToString().PadLeft(5, "0") & "").
    Cela ne devrait donc pas te poser de problème.

    Bien sûr les caractères ajoutés avec PadLeft et PadRight lors de la sauvegarde doivent être enlevés lors de la lecture des enregistrements. Pour cela, il faut utiliser les méthodes Trim, TrimStart et TrimEnd avec les paramètres adéquats. La méthode SubString peut aussi aider.

    Je joins le fichier PadLeftEtTrim.pdf. C'est un extrait de leçon qui traite de ces méthodes.

    Bon travail,

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    Phil rob merci pour ton aide
    ca marche
    merci infiniment

  11. #11
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    bonjour,
    comment formater a nouveau ce montant dans mon datagridview
    0000002544433 qu'il devienne (25444,33) DGView.Item(4, IndiceLigneDGV).Value = C4.
    j'ai essayé de code mais ça n'a pas marché DGView.Columns.Item(4).DefaultCellStyle.Format = "n2"

  12. #12
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    La formule suivante devrait convenir :
    C4 = (CType(Uneligne.Substring(8, 13), Integer) / 100).ToString .

    Bon après-midi,

  13. #13
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    merci beaucoup
    ca marche très bien
    merci infiniment

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je ne sais pas si ça intéresse mais bon!

    Code MyTxt.txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    124579990000002544433azouz benali
    124012970000001234533Phil Rob
    123456780000000987433Azerty Qwarto

    Code schema.ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [testTXT.txt]
    Format = FixedLength
    Col1=A Text  Width 6  
    Col2=B Text Width 2 
    Col3=C Double Width 13 
    Col4=D Text  Width 12

    Code Form1_Load : 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
    Imports ADODB
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim MyRs As New ADODB.Recordset()
            Dim MyCn As New ADODB.Connection()
            MyCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyRep\MyTxt;Extended Properties=""text;HDR=No;FMT=Delimited"";"
            MyCn.Open()
            MyRs.Open("select A,B,C/100 as C,D from [testTXT#txt]", MyCn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
            Dim dt As New DataTable
            Dim myDA As OleDbDataAdapter = New OleDbDataAdapter()
            Dim myDS As DataSet = New DataSet()
            myDA.Fill(myDS, MyRs, "MyTable")
            DataGridView1.DataSource = myDS.Tables(0)
            MyRs = Nothing
            MyCn.Close()
            MyCn = Nothing
        End Sub
    End Class
    Dernière modification par Invité ; 04/04/2019 à 15h21.

  15. #15
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ok dysorthographie, c'est beau !
    Je ne plaisante pas ... je trouves ta solution un peu lourde pour lire un simple fichier ligne par ligne ...
    Cdt,

  16. #16
    Invité
    Invité(e)
    Par défaut
    c'était juste un exercice de style, j'ai attendu que le poste soit résolut avant de poster.

    en fait je considère le fichier comme la table d'une base de donnée et je traite la totalité du fichier par une seule requête SQL!
    Dernière modification par Invité ; 04/04/2019 à 16h35.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/02/2014, 01h30
  2. [VB6]Importer un fichier texte dans une table ACCESS
    Par jean-pierre96 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/02/2013, 15h55
  3. Importer un fichier texte dans une table en VBA
    Par Benji01 dans le forum VBA Access
    Réponses: 8
    Dernier message: 18/04/2008, 23h47
  4. Importer un fichier texte dans une table avec champ Memo
    Par Steph4fun dans le forum Paradox
    Réponses: 12
    Dernier message: 25/11/2007, 23h10
  5. Comment importer un fichier text dans une table
    Par mongilotti dans le forum SQL
    Réponses: 6
    Dernier message: 21/05/2007, 13h05

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