导出全部数据到excel;
代码如下:
1 protected void btnExport_Click(object sender, EventArgs e)
2 {
3 Response.Clear();
4 Response.Buffer = true;
5 Response.Charset = "utf-8";
6 string FileName;
7 FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";
8 Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName);
9 Response.ContentType = "application/ms-excel";
10 Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
11 StringWriter strWriter = new StringWriter();
12 HtmlTextWriter htWriter = new HtmlTextWriter(strWriter);
13 gvProvince.AllowPaging = false;
14 gvProvince.PagerSettings.Visible = false;
15 gvProvince.AllowSorting = false;
16 BindgvProvince();
17 gvProvince.RenderControl(htWriter);
18 Response.Write(strWriter.ToString());
19 Response.End();
20 gvProvince.AllowPaging = true;
21 gvProvince.PagerSettings.Visible = true;
22 BindgvProvince();
23 }
24 public override void VerifyRenderingInServerForm(Control control)
25 {
26
27 }
先让gridview的分页效果为false,这样就可以导出全部数据,当导出数据以后让分页效果为true;
记住必须加下面那个空处理的函数重写 要不然导出会出现错误;
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
这段代码防止导出时候出现乱码;
效果如下图:
导出当前页只需要在导出的时候不把分页效果设置为false就可以:
代码如下:
1 protected void Button2_Click(object sender, EventArgs e)
2 {
3 Response.Clear();
4 Response.Buffer = true;
5 Response.Charset = "utf-8";
6 string FileName;
7 FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";
8 Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName);
9 Response.ContentType = "application/ms-excel";
10 Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
11 StringWriter strWriter = new StringWriter();
12 HtmlTextWriter htWriter = new HtmlTextWriter(strWriter);
13 gvProvince.PagerSettings.Visible = false;
14 gvProvince.AllowSorting = false;
15 BindgvProvince();
16 gvProvince.RenderControl(htWriter);
17 Response.Write(strWriter.ToString());
18 Response.End();
19 gvProvince.AllowPaging = true;
20 gvProvince.PagerSettings.Visible = true;
21 BindgvProvince();
22 }
那个空处理函数也是必须操作的,当然你要是在一个页面中有导出当前页和导出全部数据
那么只需要存在一次就可以;
效果如下:
有人说在导出当前页的时候会出现把分页行也到出来:
其实质需要在导出数据时候把分行设置为不显示导出后设置为显示 就可以了:
就是通过改变gridview的PagerSetting是属性就可以;
gvProvince.PagerSettings.Visible = false;
gvProvince.AllowSorting = false;
BindgvProvince();
gvProvince.RenderControl(htWriter);
Response.Write(strWriter.ToString());
Response.End();
gvProvince.AllowPaging = true;
gvProvince.PagerSettings.Visible = true;
要是在导出时候出现<pages enableEventValidation="true"/>或好像 gvProvince.RenderControl(htWriter)的问题 只需要在页面中加入<%@ Page Language="C#"
EnableEventValidation ="false" AutoEventWireup="true" CodeFile="fromProvince.aspx.cs" Inherits="Province_fromProvince" %>