Vb.net 要归档的数据表
在搜索“DataTable to File VB.net”之后,我在互联网上找到了这段代码。我想做的是在filestream中输出,是否可以设置一个响应outputstream?谢谢 编辑:为了澄清(更改),我现在正在处理以下内容:Vb.net 要归档的数据表,vb.net,Vb.net,在搜索“DataTable to File VB.net”之后,我在互联网上找到了这段代码。我想做的是在filestream中输出,是否可以设置一个响应outputstream?谢谢 编辑:为了澄清(更改),我现在正在处理以下内容: Sub DataTable2CSV(ByVal table As DataTable, ByVal filename As String) DataTable2CSV(table, filename, vbTab) End Sub Sub DataTable2CS
Sub DataTable2CSV(ByVal table As DataTable, ByVal filename As String)
DataTable2CSV(table, filename, vbTab)
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
下面的方法应该有效
Protected Sub DoExportFinancials()
Dim ef As New ExportFinancials()
ef.Behavior = ExportFinancials.ObjectBehavior.Export
If ef.Load() = True Then
Me.GridView4.DataSource = ef.DT
Me.GridView4.DataBind()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
' Response.Charset = ""
'Response.Cache.SetCacheability(HttpCacheability.NoCache)
Dim stringWrite As StringWriter = New StringWriter
Dim htmlWrite As HtmlTextWriter = New HtmlTextWriter(stringWrite)
GridView4.RenderControl(htmlWrite)
Response.Write(stringWrite.ToString())
Response.End()
End If
编辑:根据问题的更多细节,
[更改]:如何将DataTable作为CSV/Excel文件传递到响应流,而不将其写入服务器上的磁盘
实现上述功能的一种方法是首先将DataTable绑定到GridView,然后使用下面的
Dim FilePath As String = serverPath & "\App_Data\" & FileName
Response.Clear()
Response.ContentType = "text/csv"
Response.AddHeader("Content-Disposition", "attachment; filename=" & FileName)
Response.TransmitFile(FilePath)
Response.End()
请详细说明一下你想做什么。添加一些伪代码,如果有的话,它会显示您希望此代码执行的其他操作。目前,此代码只是将一个文件添加到我的Web服务器上,我希望它将一个文件输出给单击按钮在其计算机上导出的人。我读过很多书,上面说你只能用Response来做这件事。*但是还没有找到任何适合这段代码的东西。当我现在点击按钮时,该文件试图将自己写入其无权访问的服务器。这会在Web服务器上查找文件,不是吗?我正在尝试从一个数据表转到下载的文件如果我是对的,您正在使用DataTable2CSV将数据表的内容写入CSV文件。这将创建一个新的CSV文件。在上面的代码段中传递与CSV文件相同的文件路径,新文件应被下载。如果这不是您要查找的内容,请详细说明。感谢您提供更多详细信息如果出现写访问问题,您可以快速找到解决方案,将DataTable的内容绑定到GridView(可能会将其隐藏),并使用以下代码导出响应。ContentType=“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”Response.AddHeader(“内容处置”,“附件;filename=filename.xls”)Response.Charset=”“Response.Cache.SetCacheability(HttpCacheability.NoCache)Dim stringWrite As StringWriter=New StringWriter Dim htmlWrite As HtmlTextWriter=New HtmlTextWriter(stringWrite)grid.RenderControl(htmlWrite)Response.Write(stringWrite.ToString())Response.End()无法找出Excel变为空白的原因。请阅读下面的文章
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
Response.Charset = "" Response.Cache.SetCacheability(HttpCacheability.NoCache)
Dim stringWrite As StringWriter = New StringWriter
Dim htmlWrite As HtmlTextWriter = New HtmlTextWriter(stringWrite)
grid.RenderControl(htmlWrite) Response.Write(stringWrite.ToString())
Response.End()