2013-02-08 177 views
-1

我有一个CSV文件中的两列,我需要将每列存储在一个单独的数组中。如何从CSV文件读取数据并将信息存储到数组中?

Name,AvalibilityAsBoolean 
--------------------------- 
Vagarth Gaurav,True 
Dhananjay Menon,False 

我想有一个数组作为名称,另一个数组作为布尔值存储类似于下面。

Name(0) = "Vagarth Gaurav" 
Name(1) = "Dhananjay Menon" 
Available(0) = True 
Available(1) = False 

唯一的问题是读取CSV并将字符串和布尔值存储到适当的数组中。

请帮忙,我是VB新手。我正在使用Visual Basic 2010

+0

可能重复(http://stackoverflow.com/questions/736629/parse-delimited-csv-in-net) – CloudyMarble

回答

2

我确定这个问题已被问过,但这应该有所帮助。利用TextFieldParser Class为您解析可以让您轻松完成。代码示例中也显示了用于管理这两个数组的代码。

Dim arrName() As String 
    Dim arrValue() As String 

    Using ioReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\test\test.csv") 

     ioReader.TextFieldType = FileIO.FieldType.Delimited 
     ioReader.SetDelimiters(",") 

     While Not ioReader.EndOfData 

      Dim arrCurrentRow As String() = ioReader.ReadFields() 

      If arrName Is Nothing Then 

       ReDim Preserve arrName(0) 
       ReDim Preserve arrValue(0) 

       arrName(0) = arrCurrentRow(0) 
       arrValue(0) = arrCurrentRow(1) 

      Else 

       ReDim Preserve arrName(arrName.Length) 
       ReDim Preserve arrValue(arrValue.Length) 

       arrName((arrName.Length - 1)) = arrCurrentRow(0) 
       arrValue((arrValue.Length - 1)) = arrCurrentRow(1) 

      End If 

     End While 
+0

谢谢版本很多@NoAlias。它完美的作品! – Gaurav

1
Dim sData() As String 
Dim arrName, arrValue as New List(Of String)() 

Using sr As New StreamReader(sFile) 
    While Not sr.EndOfStream 
     sData = sr.ReadLine().Split(","c) 

     arrName.Add(sData(0).Trim()) 
     arrValue.Add(sData(1).Trim()) 
    End While 
End Using 

你也许要存储值作为Boolean(可用,不可用的)。你可以这样做:

Dim arrValue As New List(Of Boolean)() 
... 

    arrValue.Add(Not sData(1).Trim().ToUpper().StartsWith("NOT")) 
[解析分隔CSV在.NET]的
+0

非常感谢你! – Gaurav

相关问题