2017-04-06 48 views
-1

我的問題類似於這個post。我可以創建csv,但創建後無法寫入。但不像那篇文章,我沒有兩次創建文件。可以創建csv,但不能寫入它

我的代碼:

Dim path As String = "C:\xxx\yyy\" & csvFileName 

If File.Exists(path) = False Then 
    ' Create a file to write to. 
    Dim createText As String = String.Empty + Environment.NewLine 
    File.WriteAllText(path, createText) 
End If 


Dim sw As StreamWriter = New StreamWriter(csvFileName, True) 

'first, write all column names to csv. 
Dim sb As New StringBuilder 
For Each col As DataColumn In dt.Columns 
    sb.Append(col.ColumnName) 
Next 
sw.Write(sb.ToString) 

'now, write rows to csv. 
For Each row As DataRow In dt.Rows 
    sb = New StringBuilder 

    For Each col As DataColumn In dt.Columns 
     sb.Append(row(col.ColumnName)) 
    Next 

    sw.Write(sb.ToString) 
Next 

sw.Close() 

任何幫助表示讚賞。謝謝。

+0

你指的是, 「路徑」 或 「csvFileName」 哪個文件? 「不能寫入」是什麼意思?你是否遇到異常或會發生什麼? – mm8

+0

糟糕,我看到我使用csvFileName的位置,在設置Streamwriter時應該使用路徑。我沒有得到一個例外,只是在csv沒有數據。謝謝。 – EManning

+0

所以這回答你的問題? – mm8

回答

2

您在這裏使用兩個不同的文件名。該StreamWriter應該寫信給path而不是csvFileName

Dim sw As StreamWriter = New StreamWriter(path, True) 
1

有很多問題在你的代碼

  1. 你不寫列分隔符
  2. 您正在使用的文件名,而不是完整的路徑
  3. 您正在使用sw.Write()方法而不是sw.WriteLine()(所有文本將在一行上寫)

您可以使用下面的代碼:

Dim path As String = "C:\xxx\yyy\" & csvFileName 

    If File.Exists(path) = False Then 
    ' Create a file to write to. 
     Dim createText As String = String.Empty + Environment.NewLine 
     File.WriteAllText(path, createText) 
    End If 


    Using sw As StreamWriter = New StreamWriter(path, True) 

     'first, write all column names to csv. 
     Dim sb As New StringBuilder 

     For Each col As DataColumn In dt.Columns 
      sb.Append(col.ColumnName & ",") 
     Next 

     sw.WriteLine(sb.ToString) 

     'now, write rows to csv. 
     For Each row As DataRow In dt.Rows 
      sb = New StringBuilder 

      For Each col As DataColumn In dt.Columns 
       sb.Append(row(col.ColumnName).ToString & ",") 
      Next 

      sw.WriteLine(sb.ToString) 
     Next 

     sw.Close() 

    End Using 
+1

謝謝,哈迪。代碼已被修改並且功能完美。 – EManning

+0

@EManning樂於幫忙 – Hadi

+0

@EManning對於詳細而有用的回答並接受並提出另一個答案,這是個好主意。大聲笑 :) – 2017-04-07 06:23:44

相關問題