Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 可以创建csv,但无法写入_Wpf_Vb.net_Csv - Fatal编程技术网

Wpf 可以创建csv,但无法写入

Wpf 可以创建csv,但无法写入,wpf,vb.net,csv,Wpf,Vb.net,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 Fil

我的问题与此类似。我可以创建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()

感谢您的帮助。谢谢。

您在这里使用了两个不同的文件名。
StreamWriter
应该写入
path
,而不是
csvFileName

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

代码中有很多问题

  • 您没有写入列分隔符
  • 您使用的是文件名而不是完整路径
  • 您使用的是
    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
    

    您指的是哪个文件,“路径”还是“csvFileName”?“不能写”是什么意思?您是否遇到了异常或发生了什么?哎呀,我看到我在哪里使用了csvFileName,我在设置streamwriter时应该在哪里使用path。我没有收到异常,只是csv中没有数据。谢谢。这回答了你的问题?是的。问题已经回答了。谢谢你,哈迪。代码已被修改,运行正常。@伊曼宁很高兴help@EManning对一个详细而有用的答案表示感谢,然后接受并投票表决另一个答案,这是一个好主意。Lol:)