【发布时间】:2012-08-31 21:21:23
【问题描述】:
过去两天我一直在尝试获取一些血腥数据以导出到 Excel。经过大量研究,我确定最好和最常见的方法是使用HttpResponse 标头,如下面的代码所示。在调试模式下经历无数次之后,我已经确认数据确实在那里,并且按照我想要的方式过滤和排序。但是,它不会以 Excel 文件的形式下载,也不会为此做任何事情。
我怀疑这可能与我的UpdatePanel 或ImageButton 未正确回帖有关,但我不确定。我究竟做错了什么?请帮我调试这个问题。我将永远感激不尽。谢谢你。 :)
标记
<asp:UpdatePanel ID="statusUpdatePanel" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnExportXLS" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="10"
AllowSorting="True" DataSourceID="GridView1SDS" DataKeyNames="ID">
</asp:GridView>
<span><asp:ImageButton ID="btnExportXLS" runat="server" /></span>
</ContentTemplate>
</asp:UpdatePanel>
代码隐藏
Protected Sub ExportToExcel() Handles btnExportXLS.Click
Dim dt As New DataTable()
Dim da As New SqlDataAdapter(SelectCommand, ConnectionString)
da.Fill(dt)
Dim gv As New GridView()
gv.DataSource = dt
gv.DataBind()
Dim sw As New IO.StringWriter()
Dim hw As New System.Web.UI.HtmlTextWriter(sw)
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("content-disposition", "attachment;filename=Report.xls")
Response.Charset = String.Empty
gv.RenderControl(hw)
Response.Write(sw.ToString()) 'sw is a valid html table, but no Excel file downloads. :(
Response.End()
End Sub
【问题讨论】:
标签: asp.net vb.net gridview updatepanel export-to-excel