我有一个VB Visual Studio2012项目,我可以在其中创建.csv文件。下面是它的摘录。基本上,当我调试我的程序时,它会像预期的那样在bin/debug中创建.csv文件。但是当我发布这个程序的时候,我怎么也想不出它在哪里或者为什么没有创建它们。我已经将构建输出路径更改为几个不同的时间,并确保我处于它的“发布”部分。我甚至不关心输出在哪里,我只是想要它在某个地方!谢谢
编辑:好的,我找到了这个文件...C:\Users\ah0169569\AppData\Local\Apps\2.0\BLWZBB1R.02J\XTOQVPX5.N3O\payr..tion_d310a0976fa1c317_0001.0000_81024c9c62a3db84,所以这是一个愚蠢的位置。如何将输出更改为位于我的应用程序文件夹中?还是用户指定的地方?
Sub DataTable2CSV(ByVal table As DataTable, ByVal filename As String)
DataTable2CSV(table, filename, ",")
End Sub
Sub DataTable2CSV(ByVal table As DataTable, ByVal filename As String, _
ByVal sepChar As String)
Dim writer As System.IO.StreamWriter
Try
writer = New System.IO.StreamWriter(filename)
' first write a line with the columns name
Dim sep As String = ""
Dim builder As New System.Text.StringBuilder
For Each col As DataColumn In table.Columns
builder.Append(sep).Append(col.ColumnName)
sep = sepChar
Next
writer.WriteLine(builder.ToString())
' then write all the rows
For Each row As DataRow In table.Rows
sep = ""
builder = New System.Text.StringBuilder
For Each col As DataColumn In table.Columns
builder.Append(sep).Append(row(col.ColumnName))
sep = sepChar
Next
writer.WriteLine(builder.ToString())
Next
Finally
If Not writer Is Nothing Then writer.Close()
End Try
End Sub发布于 2014-01-10 02:19:48
在你的代码中要修改的第一件事是Try/Finally。通过这种方式,你永远不会知道你的代码是否失败,以及失败的原因。我添加了一个Catch和一个MessageBox,只是为了显示是否有错误
Try
Using writer = New System.IO.StreamWriter(filename)
Dim builder As New System.Text.StringBuilder
For Each col As DataColumn In table.Columns
builder.Append(col.ColumnName + sepChar)
Next
builder.Length -= 1
builder.AppendLine()
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
builder.Append(row(col.ColumnName) + sepChar)
Next
builder.Length -= 1
builder.AppendLine()
Next
writer.Write(builder.ToString())
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try下一件事是Using Statement,它确保在出现异常的情况下也能适当地关闭流。最新的是对StringBuilder用法的修正,它可以在一次调用中累积文本并编写所有内容。当然,这对于小数据来说不是问题。
https://stackoverflow.com/questions/21027793
复制相似问题