How can I read individual lines of a CSV file into a string array, to then be selectively displayed

Posted by Ryan on Stack Overflow See other posts from Stack Overflow or by Ryan
Published on 2010-04-02T21:47:42Z Indexed on 2010/04/02 21:53 UTC
Read the original article Hit count: 609

Filed under:
|
|

I need your help, guys! :|

I've got myself a CSV file with the following contents:

1,The Compact,1.8GHz,1024MB,160GB,440    
2,The Medium,2.4GHz,1024MB,180GB,500    
3,The Workhorse,2.4GHz,2048MB,220GB,650

It's a list of computer systems, basically, that the user can purchase.

I need to read this file, line-by-line, into an array. Let's call this array csvline().

The first line of the text file would stored in csvline(0). Line two would be stored in csvline(1). And so on. (I've started with zero because that's where VB starts its arrays). A drop-down list would then enable the user to select 1, 2 or 3 (or however many lines/systems are stored in the file). Upon selecting a number - say, 1 - csvline(0) would be displayed inside a textbox (textbox1, let's say). If 2 was selected, csvline(1) would be displayed, and so on.

It's not the formatting I need help with, though; that's the easy part. I just need someone to help teach me how to read a CSV file line-by-line, putting each line into a string array - csvlines(count) - then increment count by one so that the next line is read into another slot.

So far, I've been able to paste the numbers of each system into an combobox:

Using csvfileparser As New Microsoft.VisualBasic.FileIO.TextFieldParser _
        ("F:\folder\programname\programname\bin\Debug\systems.csv")

            Dim csvalue As String()

            csvfileparser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
            csvfileparser.Delimiters = New String() {","}

            While Not csvfileparser.EndOfData

                csvalue = csvfileparser.ReadFields()

                combobox1.Items.Add(String.Format("{1}{0}", _
                                          Environment.NewLine, _
                                          csvalue(0)))

            End While

        End Using

But this only selects individual values. I need to figure out how selecting one of these numbers in the combobox can trigger textbox1 to be appended with just that line (I can handle the formatting, using the string.format stuff). If I try to do this using csvalue = csvtranslator.ReadLine , I get the following error message:

"Error 1 Value of type 'String' cannot be converted to '1-dimensional array of String'."

If I then put it as an array, ie: csvalue() = csvtranslator.ReadLine , I then get a different error message:

"Error 1 Number of indices is less than the number of dimensions of the indexed array."

What's the knack, guys? I've spent hours trying to figure this out.

Please go easy on me - and keep any responses ultra-simple for my newbie brain - I'm very new to all this programming malarkey and just starting out! :)

© Stack Overflow or respective owner

Related posts about vb

Related posts about vb.net