第一步:先建立一个基本的aspx页面default.aspx,我们掐头去尾,只来关键的代码:
代码如下 | 复制代码 |
第二步:在对应的在default.aspx.cs中,复制入以下代码:
代码如下 | 复制代码 |
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindData(); } } private void BindData() { string query = "SELECT * FROM customers"; SqlConnection myConnection = new SqlConnection(ConnectionString); SqlDataAdapter ad = new SqlDataAdapter(query, myConnection); DataSet ds = new DataSet(); ad.Fill(ds, "customers"); GridView1.DataSource = ds; GridView1.DataBind(); } public override void VerifyRenderingInServerForm(Control control) { // Confirms that an HtmlForm control is rendered for } protected void Button1_Click(object sender, EventArgs e) { Response.Clear(); Response.AddHeader("content-disposition","attachment;filename=FileName.xls"); Response.Charset = "gb2312"; Response.ContentType = "application/vnd.xls"; System.IO.StringWriter stringWrite = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWrite =new HtmlTextWriter(stringWrite); GridView1.AllowPaging = false; BindData(); GridView1.RenderControl(htmlWrite); Response.Write(stringWrite.ToString()); Response.End(); GridView1.AllowPaging = true; BindData(); } protected void paging(object sender,GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; BindData(); } |
在上述代码中,我们首先将gridview绑定到指定的数据源中,然后在button1(也就是用来控制导出的)的事件中,定义相关代码。这里使用Response.AddHeader("content-disposition","attachment;filename= exporttoexcel.xls");中的filename来指定将要导出的excel文件名,就叫做exporttoexcel.xls。要注意的是,由于gridview的内容可能是分页显示的,因此在每次导出excel文件时,需要先将gridview的allowpaging属性设置为false,然后通过页面流的方式导出当前页的gridview内容到excel中,最后再重新设置其allowpaging属性。另外要注意的是,要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运行时为指定的ASP.NET 服务器控件呈现HtmlForm 控件。
下面再介绍一种方法,也可以实现GridView到Excel的内容导出。先来看一个自定义函数:
代码如下 | 复制代码 |
public static void ToExcel(System.Web.UI.Control ctl,string FileName) { HttpContext.Current.Response.Charset ="UTF-8"; HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; HttpContext.Current.Response.ContentType ="application/ms-excel"; HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+""+FileName+".xls"); ctl.Page.EnableViewState =false; System.IO.StringWriter tw = new System.IO.StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); ctl.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End(); } //下面这几行代码一定不要忘记,否则导入不成功! public override void VerifyRenderingInServerForm(Control control) { // Confirms that an HtmlForm control is rendered for } |
用法:ToExcel(GVStaff, TextBox1.Text);
导出Excel出错问题
以前用DataGrid导出为excel,只需要现在的代码就可以搞定了:
代码如下 | 复制代码 |
Response.Clear(); Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); Response.Charset = ""; Response.ContentType = "application/vnd.xls"; System.IO.StringWriter stringWrite = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); gvMaster.RenderControl(htmlWrite); Response.Write(stringWrite.ToString()); Response.End(); |
可现在使用gridview后,上面的代码总提示错误,后来摸索了好大会,总算找出了问题,下面是解决办法:
1、在导出界面中重载:
代码如下 | 复制代码 |
public override void VerifyRenderingInServerForm(Control control) |
2、在web.config中修改下面的配置:
代码如下 | 复制代码 |
|
或者修改ASPX页面的头部定义:
代码如下 | 复制代码 |
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" |
现在再去试试吧,已经可以把Gridview里的内容导出到Excel了,你可以试下哦。
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级