C# 为什么“导出到excel”功能会导出整个页面?

C# 为什么“导出到excel”功能会导出整个页面?,c#,gridview,export,export-to-excel,xls,C#,Gridview,Export,Export To Excel,Xls,我试图导出显示在窗口(模式)中的gridview,但它会导出整个页面 public void ExportToXLS(GridView gv) { gv.AllowPaging = false; HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.ClearHeaders();

我试图导出显示在窗口(模式)中的gridview,但它会导出整个页面

public void ExportToXLS(GridView gv)
{
    gv.AllowPaging = false;
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridView.xls");
    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView gvExp = new GridView();
    gvExp = gv;
    gvExp.RenderControl(htmlWrite);
    HttpContext.Current.Response.Write(stringWrite.ToString());
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.Close();
    HttpContext.Current.Response.End();
}

问题是我在gridview中有一个链接按钮,它导致页面无法正确呈现

解决方案很简单,我只是删除了链接按钮认为我真的不需要它们的列

public void ExportToXLS(GridView gv)
{

    GV.Columns[4].Visible = false;
    GV.Columns[5].Visible = false;

    gv.AllowPaging = false;
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridView.xls");
    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView gvExp = new GridView();
    gvExp = gv;
    gvExp.RenderControl(htmlWrite);
    HttpContext.Current.Response.Write(stringWrite.ToString());
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.Close();
    HttpContext.Current.Response.End();
}

GV.Columns[].Visible=false刚开始的几行代码就解决了我的整个问题。

我已经测试了你的代码,没有任何问题。问题可能出在此处未显示的代码中。