【问题标题】:Export Gridview to Excel but the whole aspx page exported instead将 Gridview 导出到 Excel,但导出整个 aspx 页面
【发布时间】:2013-10-10 09:11:24
【问题描述】:

这是代码。但是 Excel 文件显示的是整个 aspx 页面而不是 gridview。

Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
    Try

        Response.Clear()
        Response.AddHeader("content-disposition", ("attachment;filename=HotelList_" & DateTime.Now.Year.ToString().Trim()) + DateTime.Now.Month.ToString().Trim().PadLeft(2, Convert.ToChar("0")) + DateTime.Now.Day.ToString().Trim().PadLeft(2, Convert.ToChar("0")) & ".xls")
        Response.Charset = ""
        Response.Cache.SetCacheability(HttpCacheability.NoCache)
        Response.ContentType = "application/vnd.ms-excel"

        Dim stringWrite As New System.IO.StringWriter
        Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)

        Dim selctedCountry As String = ddlCountry.SelectedItem.Text.ToString()
        Dim selCity As String = ddlCity.SelectedItem.Text.ToString()

        htmlWrite.Write("<div style='PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px'><h3>HOTEL LIST</h3>")
        htmlWrite.Write("<table><tr><td colspan='2'> Country  : " & selctedCountry & " </td></tr>")
        htmlWrite.Write("<table><tr><td colspan='2'> City     : " & selCity & " </td></tr>")

        gvHotelMarkup.RenderControl(htmlWrite)
        htmlWrite.Write("</div>")

        Response.Write(stringWrite.ToString())
        Response.End()


    Catch ex As Exception
        lblErrMessage.Message = ex.Message()
    End Try

End Sub

知道如何解决这个问题吗? 提前致谢。

【问题讨论】:

    标签: asp.net vb.net gridview export-to-excel


    【解决方案1】:

    我不确定到底是什么问题,但是当我将它添加到代码隐藏时,它运行完美

      Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
            ' Confirms that an HtmlForm control is rendered for the specified ASP.NET
            '               server control at run time. 
    
        End Sub
    

    【讨论】:

    • 您好,感谢您的回答。我添加了这个,但它仍在导出整个页面。
    【解决方案2】:

    下载 ClosedXML 库

    using ClosedXML.Excel;   
    using System.IO;
    using System.Data;
    
    Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
    
    DataTable dt = new DataTable("GridView_Data");
    foreach(TableCell cell in GridView1.HeaderRow.Cells)
    {
        dt.Columns.Add(cell.Text);
    }
    foreach (GridViewRow row in GridView1.Rows)
    {
        dt.Rows.Add();
        for (int i=0; i<row.Cells.Count; i++)
        {
            dt.Rows[dt.Rows.Count - 1][i] = row.Cells[i].Text;
        }
    }
    using (XLWorkbook wb = new XLWorkbook())
    {
        wb.Worksheets.Add(dt);
    
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;filename=GridView.xlsx");
        using (MemoryStream MyMemoryStream = new MemoryStream())
        {
            wb.SaveAs(MyMemoryStream);
            MyMemoryStream.WriteTo(Response.OutputStream);
            Response.Flush();
            Response.End();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多