【问题标题】:Export Gridview Data to Excel in ASP.NET Linq data bind在 ASP.NET Linq 数据绑定中将 Gridview 数据导出到 Excel
【发布时间】:2013-08-05 19:33:50
【问题描述】:

我正在使用波纹管代码将 gridview 数据导出到 excel,但问题是整个页面导出到 excel。 我只想要gridview数据而不是整页导出。如何解决这个问题?

HtmlForm form = new HtmlForm();
Response.Clear();
Response.Buffer = true;
string filename = "GridViewExport_" + DateTime.Now.ToString() + ".xls";

Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
gdvInBox.AllowPaging = false;
gdvInBox.DataBind();
form.Controls.Add(gdvInBox);
this.Controls.Add(form);
form.RenderControl(hw);

//style to format numbers to string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();

提前致谢。

【问题讨论】:

    标签: asp.net excel entity-framework gridview export


    【解决方案1】:

    设置仅导出网格视图的 excel 导出非常容易。这已经过测试,只会导出显示在您给定网页上的网格视图。

    对于您的 C# 代码,请使用以下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class vxcel_export : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    
        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Clear();
            Response.AddHeader("content-disposition", "attachment;filename=file-name.xls");
            Response.ContentType = "application/vnd.xlsx";
            System.IO.StringWriter stringWrite = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            GridView1.RenderControl(htmlWrite);
            Response.Write(stringWrite.ToString());
            Response.End();
        }    
    
        public override void VerifyRenderingInServerForm(Control control)
        {
        }
    }
    

    在您的 aspx 代码中使用以下内容:

    确保将EnableEventValidation="false" 添加到页面顶部的&lt;%@Page %&gt; 代码中。

    将以下代码放置在要放置按钮的位置,以将网格视图导出到 Excel:

    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Whatever you want your button to say" />
    

    您可以在按钮中将高度和宽度修改为您想要的任何大小。

    就是这样。要记住的一件事是,当您导出文件时,它不是真正的 Excel 文件,除非您将其保存为工作簿/Excel 文件。

    【讨论】:

    • 你如何让同样的事情在用户控件中工作?您不能覆盖 VerifyRendering
    【解决方案2】:

    我还必须将以下代码应用于我的页面才能使其正常工作。

    public override void VerifyRenderingInServerForm(Control control)
    {
      /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
         server control at run time. */
    }
    

    我在这里找到了解决方案 --> GridView must be placed inside a form tag with runat="server" even after the GridView is within a form tag

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      相关资源
      最近更新 更多