Export GridView in Excel (arbeiten nicht)

Ich habe in den letzten zwei Tagen versuchen, einige blutige Daten nach Excel exportieren. Nach viel recherche habe ich festgestellt, dass die beste und häufigste Weg ist, mit HttpResponse - Header, wie gezeigt in meinem code unten. Nachdem wir durch unzählige mal im debug-Modus habe ich bestätigt, dass die Daten in der Tat gibt es, und beide werden gefiltert und sortiert, wie ich es möchte. Es wird jedoch nicht als download einer Excel-Datei, oder tun Sie überhaupt etwas für diese Angelegenheit.

Vermute ich, daß dies etwas zu tun mit meiner UpdatePanel oder vielleicht die ImageButton Buchung nicht wieder richtig, aber ich bin mir nicht sicher. Was mache ich falsch? Bitte helfen Sie mir, um diese debug-Ausgabe. Ich werde ewig dankbar sein. Danke. 🙂

Markup

<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>

Codebehind

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
InformationsquelleAutor Chiramisu | 2012-08-31
Schreibe einen Kommentar