将GridView中的数据导出到Excel / Word中

来源:互联网 发布:韩火火淘宝店模特是谁 编辑:程序博客网 时间:2024/04/29 13:12

前提条件:你的GridView已经能正常显示数据了,不管你是用代码实现的,还是直接绑定数据库实现的。
1、如果你的GridView启动了分页功能,则要先将该功能关闭,即将allowpaging的属性设为false, AllowPaging="false";然后重新调用databind()或者你自己定义的显示函数,确保所有的数据都显示在GridView中,再导完数据之后,记得把allowpaging的属性值改回来。
2、在页面中添加一个"导出"按钮,当点击该按钮时执行导出动作。双击改按钮,编写事件处理函数,添加代码如下:在用到StringWriter类的时候,要在。aspx.cs文件的头部添加命名空间:using System.IO;

protected void Button1_Click(object sender, EventArgs e){       //导出到Excel中(.xls文件)       <p>       Response.Clear();            Response.Buffer = true;      //设置输出流的HTTP字符集      Response.Charset = "GB2312";      //Response.ClearContent();      //Response.AddHeader("content-disposition", "attachment;filename=MyExcel.xls");//设置输出文件类型为excel文件。      //这行代码解决excel表名乱码      Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode("行车轨迹.xls", System.Text.Encoding.UTF8) + "\"");</p><p>      //Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//用这个会出现中文是乱码的情况,所以选用下面这句      Response.ContentEncoding = System.Text.Encoding.UTF8;</p>        /*          导出时会弹出对话框让你确认保存位置,默认的文件名为MyExcel2.xls,          你可以选择保存,也可以直接打开       */        Response.ContentType = "application/excel";        /*         如果想将文件导出到word中,则将上面的"MyExcel2.xsl"改成"MyWord.doc",         将"application/excel"改成"application/word"       */        StringWriter sw = new StringWriter();        HtmlTextWriter htw = new HtmlTextWriter(sw);        GridView1.AllowPaging = false;        GridView1.DataBind();        GridView1.RenderControl(htw);        Response.Write(sw.ToString());        Response.End();        GridView1.AllowPaging = true;}

3、重写VerifyRenderingInServerForm 函数,这样才能确保运行时为指定的ASP.NET 服务器控件呈现HtmlForm 控件;函数的内容可以为空:

public override void VerifyRenderingInServerForm(Control control){ }

4、当出现"只能在执行Render() 的过程中调用 RegisterForEventValidation;"错误时

EnableEventValidation属性是 .NET Framework 2.0 中是新增的属性,默认的情况下该属性的值为true;通过这个新增的功能ASP.NET会检查 POST方法中的所带的参数,如果认为不合法,就会抛出异常。这个设计的目的是为了防止恶意用户利用post 方法发送一些恶意数据,但是有时也会出现类似上面的错误。                           

                            只要禁止这个功能,问题就能得到解决。可以通过以下两种途径解决:
(1)、在Web.Config文件中:在<system.web></system.web>标记中添加如下代码:
<system.web>
      <pages enableEventValidation="false"> </pages>
</system.web>
(2)、在具体的.aspx页面的源代码中修改代码,如下:
<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="GridView_Export_Excel.aspx.cs" Inherits="GridView_Export_Excel" %>

 

5、gridview导出到excel是aspx文件,一般情况下,迅雷会关联所有下载文件类型

网上说是:把迅雷的监视剪贴板和监视浏览器关闭。再把迅雷退出应该就可以了搜索

我自己的办法是把迅雷卸了,当然这不是好办法,待解决!!!

0 0
原创粉丝点击