【发布时间】:2014-01-09 18:03:25
【问题描述】:
我有一个 VB Visual Studio 2012 项目,我在其中创建 .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
【问题讨论】:
-
如果您从“程序文件”之类的东西运行已发布的应用程序,则您的应用程序可能无权在那里创建/读取/更改/删除文件。将输出目标更改为用户文件夹
-
你从哪里调用子程序?
filename传递的内容是什么? -
以这种方式编写 try/catch 是一个有保证的系统,永远不会知道您的代码为什么不起作用。
-
它被安装到用户文件夹中,所以我认为不是这样。我将文件名作为字符串传递给文件。
-
我清除了所有的 try/catch 语句,结果还是一样
标签: vb.net visual-studio-2012 csv output