• ASP.NET快速导出Gridview列表中的数据到Excel的方法
  • 发布于 2个月前
  • 215 热度
    0 评论
  • 小宇宙
  • 0 粉丝 17 篇博客
  •   

.NET中的Gridview控件堪称王者级的设计,配合LinqDataSource控件做列表显示简直不要太爽,做一个简单的列表分页清单功能5分钟就可以搞定。当然,今天要讲的不是Gridview+LinqDataSource的用法,而是如何把Gridview中的数据导出到Excel文件的。其实方法很简单,

具体代码如下:

1.导出按钮代码逻辑

protected void btnExport_Click(object sender, EventArgs e)
        {
            GVList.AllowPaging = false;//把分页设置成false才能把所有数据导出来,要不然只能导出当前页的数据
            for (int i = 0; i < GVList.Columns.Count; i++)
            {
                GVList.Columns[i].Visible = true;//把要导出的字段显示出来,我这边是所有字段都要导出,所以用了个循环语句
            }
            StringWriter sw = new StringWriter();
            HtmlTextWriter htmlwrite = new HtmlTextWriter(sw);
            string excelName = "ExportList.xls";
            Response.ContentType = "application/ms-excel";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(excelName));
    
            GVList.DataBind();
            GVList.RenderControl(htmlwrite);
            Response.Write(sw.ToString());
            Response.Flush();
            Response.End();
            GVList.AllowPaging = true;
   
            GVList.DataBind();
        }
2.后端.cs文件新增如下一段代码,重写下VerifyRenderingInServerForm方法,要不然系统会报错:

    public override void VerifyRenderingInServerForm(Control control)
        {
            // Confirms that an HtmlForm control is rendered for        
            //如果要限制控件必须位于<form runat=server>标记以内,则请先呼叫这个方法,才进行展现,如此一来,如果控件放在标记以外,便会显示错误信息。
        }
3.在前端的.aspx页面的头部新增EnableEventValidation="false"属性,具体如下

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="List.aspx.cs" EnableEventValidation="false"
    Inherits="Com.ABC.CN.Localization.WebUI.List" %>
效果图:



用户评论