Asp.net 将Gridview导出到Excel,但将整个aspx页面导出

Asp.net 将Gridview导出到Excel,但将整个aspx页面导出,asp.net,vb.net,gridview,export-to-excel,Asp.net,Vb.net,Gridview,Export To Excel,这是代码。但是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;filenam

这是代码。但是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
Protected Sub btnExport\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnExport。单击
尝试
答复: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=“应用程序/vnd.ms excel”
Dim stringWrite作为新System.IO.StringWriter
Dim htmlWrite As System.Web.UI.HtmlTextWriter=新的HtmlTextWriter(stringWrite)
Dim selctedCountry As String=ddlCountry.SelectedItem.Text.ToString()
Dim selCity As String=ddlCity.SelectedItem.Text.ToString()
htmlWrite.Write(“酒店列表”)
htmlWrite.Write(“国家:&selctedCountry&”)
htmlWrite.Write(“城市:&selCity&”)
gvHotelMarkup.RenderControl(htmlWrite)
htmlWrite.Write(“”)
Response.Write(stringWrite.ToString())
答复:End()
特例
lblErrMessage.Message=ex.Message()
结束尝试
端接头
你知道怎么解决这个问题吗?
提前谢谢。

我不确定到底是什么问题,但当我将此添加到codebehind时,它工作得非常好

  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

下载关闭DXML库

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();
    }
}
使用ClosedXML.Excel;
使用System.IO;
使用系统数据;
受保护的子btnExport_Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnExport。单击
DataTable dt=新的DataTable(“GridView_数据”);
foreach(GridView1.HeaderRow.Cells中的TableCell单元格)
{
dt.Columns.Add(cell.Text);
}
foreach(GridView1.Rows中的GridViewRow行)
{
dt.Rows.Add();

对于(inti=0;iHi,感谢您的回答。我添加了这个,但它仍然导出整个页面。