csv inlezen, daarna in intern geheugen sorteren

Status
Niet open voor verdere reacties.

evertVB

Gebruiker
Lid geworden
6 apr 2009
Berichten
570
Ik was begonnen met het inlezen van een csv-file:
Code:
        MsgBox("Start import")

        Dim strLines() As String
        Dim i As Long

        Dim MyFileName As String
        MyFileName = txtbGebied.Text '==> csv file met ";" als separator

        Dim text As String = My.Computer.FileSystem.ReadAllText(MyFileName)

        strLines = Split(text, vbCrLf)

        For i = 0 To strLines.Count - 1
            MsgBox(strLines(i))
        Next i

        MsgBox("Einde import")
(Daarna kan ik neem ik aan weer Split(strLines(i),";") of zoiets gebruiken om de afzonderlijke velden uit te lezen.)

Maar als eerstvolgende stap wil ik de zojuist ingelezen gegevens sorteren op één van die velden.
Is hier iets handigs voor?
 
Hoi,

Ja, dat kan ik me voorstellen.
Vraag me echter af 'Waarom moeilijk, als het ook makkelijk kan'

CSV-bestanden zijn in o.a. Excel eenvoudig te openen en te manipuleren, waarna ze opnieuw als CSV of anderszins kunnen worden opgeslagen .......

Kortom: ik meld me af voor je topic.
 
Vraag me echter af 'Waarom moeilijk, als het ook makkelijk kan'
Om jouw vraag te beantwoorden:
Mijn programma gaat veel meer doen dan alleen maar csv sorteren.

Het scheelt nogal in gebruikersgemak of een standalone executable z'n ding helemaal alleen kan doen,
of dat er enkel voor het sorteren een uitstap naar excel gemaakt moet worden.
 
Code:
    Private Sub Sort_csv_array(ByRef strLines() As String)
        Dim i As Long
        Dim j As Long
        Dim MyFields1() As String
        Dim MyFields2() As String
        Dim hLine As String
        Dim hID1 As Integer
        Dim hID2 As Integer

        'strLines(0) contains headings
        'strLines(strLines.Count - 2) contains last line
        '1st field is numerical ID

        For i = 1 To strLines.Count - 3
            For j = i + 1 To strLines.Count - 2
                MyFields1 = Split(strLines(i), ";")
                MyFields2 = Split(strLines(j), ";")
                hID1 = Val(MyFields1(0))
                hID2 = Val(MyFields2(0))
                If hID1 > hID2 Then
                    hLine = strLines(i)
                    strLines(i) = strLines(j)
                    strLines(j) = hLine
                End If
            Next j
        Next i
    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan