2014-09-23 5 views
5

Pracuję na VS 2012, Vb.Net przy użyciu .Net 4.0.Jak utworzyć plik csv ze zmiennej łańcuchowej za pomocą edytora strumieniowego w Vb.Net?

Korzystając ze Streamwitera lub FileStream, próbuję utworzyć plik csv Temp, który będzie znajdować się w folderze c: \ windows \ temp. Wartości dla pliku .csv zostaną wypełnione ze zmiennej łańcuchowej.

Przykładowe wartości w zmiennej łańcuchowej będzie wyglądać jak ..

1,2,3,411,345 
2,3,4,55,678 
5,6,7,8,9999 

Jak napisać plik .csv z zmiennej łańcuchowej?

Dim reader As StreamReader = New System.IO.StreamReader(File.OpenRead("D:\CSV\Test.csv")) 
Dim listA As New List(Of String)() 
Dim listB As New List(Of String)() 
Dim s As String = "" 
While Not reader.EndOfStream 
    Dim line As String = reader.ReadLine() 
    Dim values As String() = line.Split(";"c) 
    listA.Add(values(0)) 
    s = s + line + Chr(10) 
End While 
+0

Podajesz kod, nie wspominając o problemie. Również dzielisz przez ';' ale twoje przykładowe dane są oddzielone przecinkiem. Ogólnie używaj dostępnego csv-parsera, takiego jak ['TextFieldParser'] (http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser (v = vs.110) .aspx) -klasa zamiast odkrywania koła. –

+0

Byłbym zainteresowany, w jaki sposób użyć TextFieldParser do utworzenia pliku CSV. –

+0

@TimSchmelter, Zakończyłem pracę kodu. Postawię odpowiedź do jutra. – goofyui

Odpowiedz

3

Używanie Streamwitera (sw to deklaracja zmiennej). Jestem w stanie napisać plik .csv.

Public Sub Test() 
     Try 

      Dim reader As StreamReader = New System.IO.StreamReader(File.OpenRead("D:\CSV\Test.csv")) 
      Dim listA As New List(Of String)() 


      If File.Exists("d:\CSV\TestOut.csv") Then 
       File.Delete("d:\CSV\TestOut.csv") 
      End If 

      Dim sw As New StreamWriter("d:\CSV\TestOut.csv") 
      Dim s As String = String.Empty 

      While reader.Peek() >= 0 
       Dim line As String = reader.ReadLine() 
       Dim values As String() = line.Split(";"c) 
       listA.Add(values(0)) 
       s = s + line + Chr(10) 
      End While 
      reader.Close() 
      sw.Write(s) 
      sw.Close() 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 

    End Sub