我试图创建一些数据的csv文件。我已经写了一个函数,成功地做到这一点....在Streamwriter对象中使用本地文件路径ASP.Net
Private Sub CreateCSVFile(ByVal dt As DataTable, ByVal strFilePath As String)
Dim sw As New StreamWriter(strFilePath, False)
''# First we will write the headers.
''#DataTable dt = m_dsProducts.Tables[0];
Dim iColCount As Integer = dt.Columns.Count
For i As Integer = 0 To iColCount - 1
sw.Write(dt.Columns(i))
If i < iColCount - 1 Then
sw.Write(",")
End If
Next
sw.Write(sw.NewLine)
''# Now write all the rows.
For Each dr As DataRow In dt.Rows
For i As Integer = 0 To iColCount - 1
If Not Convert.IsDBNull(dr(i)) Then
sw.Write(dr(i).ToString())
End If
If i < iColCount - 1 Then
sw.Write(",")
End If
Next
sw.Write(sw.NewLine)
Next
sw.Close()
End Sub
问题是我没有正确使用我想要完成的Streamwriter对象。由于这是一个asp.net,我需要用户选择一个本地文件路径来放置文件。如果我传递了这个函数的任何路径,它会尝试将它写入代码所在的服务器上指定的目录。我想这个弹出并让用户选择他们的本地机器上的一个地方放文件....
Dim exData As Byte() = File.ReadAllBytes(Server.MapPath(eio))
File.Delete(Server.MapPath(eio))
Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fn))
Response.ContentType = "application/x-msexcel"
Response.BinaryWrite(exData)
Response.Flush()
Response.End()
我打电话这样的代码的第一个函数...
Dim emplTable As DataTable = SiteAccess.DownloadEmployee_H()
CreateCSVFile(emplTable, "C:\\EmplTable.csv")
我不想指定文件位置(因为这会将文件放在服务器上而不是客户机上),而是让用户在其客户机上选择位置。
有人可以帮我把它放在一起吗?提前致谢。
我已经重新创建了我的导出函数,现在它让usr选择一个下载路径,但是下载的数据中的一列有“Doe,John”形式的数据,这一列被称为“EPLNME”输出文件,因为它读取数据中的逗号,现在数据已关闭输出文件中的一列可以有人帮我阻止这个特定的事件我不知道我怎么能。这里是代码...
Private Sub ExportCSV(ByVal data As DataTable, ByVal nameOfFile As String)
Dim context As HttpContext = HttpContext.Current
context.Response.Clear()
context.Response.ContentType = "text/csv"
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOfFile + ".csv")
''#Write column header names
For i = 0 To data.Columns.Count - 1
If (i > 0) Then
context.Response.Write(",")
End If
context.Response.Write(data.Columns(i).ColumnName)
Next
context.Response.Write(Environment.NewLine)
''#Write data
For Each row As DataRow In data.Rows
For i = 0 To data.Columns.Count - 1
If (i > 0) Then
context.Response.Write(",")
End If
context.Response.Write(row.Item(i).ToString())
Next
context.Response.Write(Environment.NewLine)
Next
context.Response.End()
End Sub
我想对您的问题进行排序的格式这是非常难以理解的。 – Yoda 2010-05-11 16:10:34