【问题标题】:How to export GridView to excelsheet?如何将 GridView 导出到 Excel 工作表?
【发布时间】:2011-09-09 10:49:49
【问题描述】:

我的页面中有一个网格视图。我想要的是当用户单击“导出”按钮时,它应该打开一个框来下载文件并保存为 Excel 表。我在网格中启用了分页,但是当我导出数据时,无论分页如何,所有行都必须在 excel 表中发送。我无法导出我的数据源(数据表),因为它包含一些隐藏的其他列,但我只是出于我的目的使用它,而不是向用户显示什么。 我怎么能这样……???我没有任何想法......

正如詹姆斯约翰逊所说..我确实喜欢那样。这是他给的代码

protected void btnExport_Click(object sender, EventArgs e)
{       
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";

    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new    System.Web.UI.HtmlTextWriter(oStringWriter);

    GridView1.RenderControl(oHtmlTextWriter);//Error is thrown from here.

    Response.Write(oStringWriter.ToString());
    Response.End();
}

但是这样做会在代码中的指定药水处引发以下错误

Control 'ctl00_ContentPlaceHolder1_ViewAdvances1_grdAdvance' of type 'GridView' must be  placed inside a form tag with runat=server.

我在用户控件中放置了gridview,用户控件放置在.aspx页面中,并且该页面使用了已经有表单标签的母版页。

【问题讨论】:

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


    【解决方案1】:

    你可以试试这样的:

    protected void btnExport_Click(object sender, EventArgs e)
    {       
        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "application/vnd.ms-excel";
        Response.Charset = "";
    
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    
        GridView1.RenderControl(oHtmlTextWriter);
    
        Response.Write(oStringWriter.ToString());
        Response.End();
    }
    

    【讨论】:

    • ..您的代码显示此错误“必须将 'GridView' 类型的控件 'ctl00_ContentPlaceHolder1_ViewAdvances1_grdAdvance' 放在带有 runat=server 的表单标记内。”但我的网格放置在子页面的内容占位符中。母版页已经有表单标签....
    【解决方案2】:

    关于这个的讨论很多:

    export gridview rows to excel sheet

    Export GridView to Excel

    Export gridview into excel in Windowsformsapplication(也许你会在这里找到一些有用的信息)

    【讨论】:

      【解决方案3】:

      将以下代码添加到您的代码后面:

      Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
          'dont delete - needed for excel export
      End Sub
      

      【讨论】:

        【解决方案4】:

        我在母版页中找到了导出到 excel 的解决方案。

        将此代码放在页面加载代码之后

         public override void VerifyRenderingInServerForm(Control control)<br/>
            {<br/>
                /* Verifies that the control is rendered */<br/>
                //base.VerifyRenderingInServerForm(control);
            }
        

        然后

        protected void btnExportExcel_Click(object sender, EventArgs e)<br/>
            {<br/>
                try<br/>
                {<br/>
                    BindReportdata(ddlReport.SelectedIndex);<br/>
                    Response.Clear();<br/>
                    Response.Buffer = true;<br/>
                    Response.AddHeader("content-disposition",<br/>
                     "attachment;filename=report.xls");<br/>
                    Response.ContentType = "application/ms-excel";<br/>
                    StringWriter sw = new StringWriter();<br/>
                    HtmlTextWriter hw = new HtmlTextWriter(sw);<br/>
                    for (int i = 0; i < gv_ReportData.Rows.Count; i++)<br/>
                    {
                        GridViewRow row = gv_ReportData.Rows[i];<br/>
                    }
                    gv_ReportData.GridLines = GridLines.Both;<br/>
                    gv_ReportData.RenderControl(hw);<br/>
                    Response.Write(sw.ToString());<br/>
                    Response.Flush();<br/>
                    Response.End();<br/>
                }<br/>
                catch (Exception ex)<br/>
                {<br/>
                    throw ex;<br/>
                }<br/>
            }<br/>
        


        并在 aspx 页面中使用 updatepanel 并触发按钮

        【讨论】:

          猜你喜欢
          • 2011-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多