ASP.NET中把Gridview内容导出到Excel示例

第一步:先建立一个基本的aspx页面default.aspx,我们掐头去尾,只来关键的代码:

 代码如下 复制代码

<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
<br/>
<asp:Button ID="BtnExport" runat="server" OnClick="BtnExport_Click"
Text="Export to Excel" />
</form>

第二步:在对应的在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)
{
//base.VerifyRenderingInServerForm(control);
}

2、在web.config中修改下面的配置:

 代码如下 复制代码

<pages enableEventValidation ="false" ></pages>

或者修改ASPX页面的头部定义:

 代码如下 复制代码

<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"
CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %>

现在再去试试吧,已经可以把Gridview里的内容导出到Excel了,你可以试下哦。

时间: 2024-12-06 03:48:34

ASP.NET中把Gridview内容导出到Excel示例的相关文章

导出 word模板-做一个题库管理系统,怎么将存储在数据库中的试卷内容导出到word模板中呢

问题描述 做一个题库管理系统,怎么将存储在数据库中的试卷内容导出到word模板中呢 C#2008,access2003,做一个题库管理系统,怎么将存储在数据库中的试卷内容导出到word模板中呢,求助各位大神,求代码 解决方案 用npoi操作数据库http://my.oschina.net/yangxiaoguang/blog/264948 解决方案二: 用npoi操作word文档http://my.oschina.net/yangxiaoguang/blog/264948 解决方案三: http

把指定的DataSet中的内容导出到Excel中

  /// <summary>  /// 把指定的DataSet中的内容导出到Excel中.  /// </summary>  /// <param name="ds">ds参数为DateSet对象</param>  /// <param name="ImpStr">该字符串用来指定一些字段来导出,其使用格式为:aaa|AAA,bbb|BBB   小写字符串为在Excel表中显示该字段的列标题,大写表示字段

紧急求助啊!怎么将动态加载到页面中的内容导出到excel啊??

问题描述 response.addHeader("Content-disposition","attchment;filename=jyt.xls");response.setContentType("application/vnd.ms-excel");//定义输出类型这两个语句只能将网页中静态的内容导出,但是用ajax从数据库取出来的数据不能导出,怎么办呢??求助各路大虾!! 解决方案 解决方案二:不用其他的jar包,行不解决方案三:有人知道

我用的是ASP.net2008中的GridView ,由于列很多项,并且是多头的(如1季度下面有3个月等),我想固定前几列,请问那位大师作过这种组件或脚本可以控

问题描述 我用的是ASP.net2008中的GridView,由于列很多项,并且是多头的(如1季度下面有3个月等),我想固定前几列,请问那位大师作过这种组件或脚本可以控制,标准的WebGridView是没有的,急着用....我的QQ:839481480 解决方案 解决方案二:感觉这个控件最不灵活了不如自己生成我一般都是拼html标签全部放到一个stringbuilder中,最后输出到div的innerHTML中.解决方案三:我的项目在运行了哈解决方案四:引用2楼ly_123456的回复: 我的项

sql server-SQL server2008中查询结果如何导出成excel,含字段名称标题列。

问题描述 SQL server2008中查询结果如何导出成excel,含字段名称标题列. 每次查询结果用点击左上角然后另存为CSV都不含有标题或者点击左上角右键选连同右键一起复制,但数据量多粘贴时很容易乱码和excel卡死. 解决方案 自己写一个程序,循环遍历下,在输出数据前先输出标题列.导出csv就是和写文本文件一样的道理.要避免乱码就是注意中文的编码,避免卡死就使用多线程. 解决方案二: 你可以选择输出结果到文件,而不是到Grid 输出文件的格式在选项中有设置,可以设置分隔符为逗号,并选择包

如何将datagridview显示内容导出为excel文件?在另外的机器上使用时有什么注意事项?

问题描述 将dataGridview中显示的数据导出生成EXCEL文件,已经编译成功,但是放到别的机器上使用的时候又不行,提示版本不对,有什么解决方法吗?运行的机器上已经装有excel.源程序如下:///<summary>///zjjzdq.com.cn///</summary>///<paramname="dt"></param>protectedvoidExportExcel(DataTabledt){if(dt==null||dt.

我要将asp.net中的gridview修改成DXperience 中的gridview该怎么写呢?

问题描述 gridview中有段代码是这样的<asp:templatefieldHeaderText="当前状态"HeaderStyle-HorizontalAlign="Center"><itemtemplate><asp:linkButtonrunat="server"id="LinkButton1"text='<%#DataBinder.Eval(Container.DataItem,

GridView数据导出到Excel方法

尝试了一下Gridview导出为Excel,原本以为很简单,可是真正应用起来还是不太好弄的,呵呵,所想非所得.总结了一下应该注意下面几点: 1.由于gridview的内容可能是分页显示的,因此,这里在每次导出excel时,先将gridview的allowpaging属性设置为false,然后databind()一下,确保搂到所有数据: 2.不用单独设置导出的路径,导出时会弹出对话框让你确认保存位置: 3.要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运

asp.net中Treeview数据绑定与动态增加节点示例

TreeView数据绑定 在ASP.NET中如何实现数据库与TreeView控件的数据绑定呢?花些时间自己编写了一个演示程序,包括有Access数据库,你可复制这两个代码做下测试,测试数据库文件后附下载. Left.aspx 代码如下:  代码如下 复制代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Left.aspx.cs" Inherits="Left&qu