mercredi 19 décembre 2012

remplir listview vb.net avec fichier Texte

Fichier Texte vers ListViewRenseigner un TreeView à partir d’un fichier texte est possible. En effet, il arrive par moment que l’utilisateur doit importer des données dans une application provenant d’une sauvegarde question de reprendre une session interrompue ou de simplement charger une forme de base de données.

À l’aide de cet exemple, j’espère pouvoir du même coup répondre à une question provenant de forum francophone : http://www.siteduzero.com/forum-83-829718-p1-remplir-listview-vb-net.html

Ne voulant pas inutilement développer une solution trop longue et voulant privilégier des réponses plus concises sur le forum en question, j’ai décidé de compléter le texte ici.

Le projet exemple utilisé pour cet article est disponible pour téléchargement à la fin.



À partir de Visual Basic, un formulaire est créé et une ListView régulière y est insérée.


Exemple de Form avec ListView
Voici le code qui permet d’importer et de renseigner la ListView1.


''' <summary>
''' sample of Text File to ListView (details view)
''' </summary>
''' <remarks></remarks>
Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        Me.Text = My.Application.Info.AssemblyName
        Fill_TreeView("c:\temp\toto.txt", "|")

    End Sub

    ''' <summary>
    ''' 1- load a Text File
    ''' 2- for each line
    ''' 3- split each lines with seperator
    ''' 4- with the array, make a ListViewItem
    ''' 5- put it in the ListView1
    ''' </summary>
    ''' <param name="sPath">full path for text file</param>
    ''' <param name="sSeperator">seperator between each value</param>
    ''' <returns>true if success</returns>
    ''' <remarks></remarks>
    Private Function Fill_TreeView(
            Optional sPath As String = "c:\temp\toto.txt",
            Optional sSeperator As String = "|") As Boolean
        Dim aline() As String
        Dim objReader As IO.StreamReader
        Dim sLine As String
        Dim arrText As New ArrayList()
        'Dim sSeperator As String
        Dim lvi As ListViewItem
        Fill_TreeView = False
        Try
            sLine = ""
            If Len(sPath) = 0 Then sPath = "c:\temp\toto.txt"
            sSeperator = "|"
            objReader = New IO.StreamReader(sPath)

            If IO.File.Exists(sPath) Then
                ListView1.View = View.Details
                ListView1.GridLines = True
                ListView1.FullRowSelect = True
                ListView1.Dock = DockStyle.Bottom
                ListView1.Columns.Add("colonne 1")
                ListView1.Columns.Add("colonne 2")
                ListView1.Columns.Add("colonne 3")
                ListView1.Columns.Add("colonne 4")
                Do
                    sLine = objReader.ReadLine()
                    If Not sLine Is Nothing Then
                        aline = sLine.Split(sSeperator)
                        lvi = New ListViewItem(aline)
                        ListView1.Items.Add(lvi)

                    End If
                Loop Until sLine Is Nothing
                objReader.Close()
            End If
            Fill_TreeView = True
        Catch ex As Exception

        End Try

    End Function

End Class




Résumons son fonctionnement.  Le programme tente de charger un fichier texte sur l’ordinateur. Ensuite, pour chaque ligne du fichier texte, le programme crée un tableau de chaîne de caractères et utilise la variable sSeparator comme éléments de division. Ces éléments de division permettent à n’importe qui de comprendre que les valeurs entre chacun de ces séparateurs appartiennent à une colonne ou un autre. Ça fonctionne donc comme une base de données ou comme MS-Excel.
Qu’importe, le séparateur utilisé pour séparer les éléments d’une ligne dans le fichier texte est la ligne verticale « | » sans les guillemets. Voici une photo du fichier ouvert avec NotePad.

Fichier Texte à Importer

Le contenu n’est pas important, heureusement.

Finalement, dans ce processus d’importation des données le tableau de chaîne de caractères ici nommé aLine est utilisé pour créer une ListViewItem. Ce ListViewItem est ensuite injecté dans la ListView. Lorsque le chargement du fichier est complété, vous devriez obtenir le résultat suivant :

Fichier Texte et TreeView

Téléchargement du projet exemple : TextFiletoTreeView




Références:

L’origine de la question :
http://www.siteduzero.com/forum-83-829718-p1-remplir-listview-vb-net.html






Aucun commentaire:

Enregistrer un commentaire