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

          在开发 ASP.NET web 应用程序时,我们很常用到 GridView 控件来显示数据,那我们怎样才能将 GridView 中的数据导出到 Excel 或者 Word 中呢?

前提条件:

1你的GridView已经能正常显示数据了,不管你是用代码实现的,还是直接绑定数据库实现的。

2、如果你的GridView启动了分页功能,则要先将该功能关闭,即将allowpaging的属性设为false, AllowPaging="false";然后重新调用databind()或者你自己定义的显示函数,确保所有的数据都显示在GridView中,再导完数据之后,记得把allowpaging的属性值改回来。

3、在页面中添加一个"导出"按钮,当点击该按钮时执行导出动作。双击改按钮,编写事件处理函数。在用到StringWriter类的时候,要在.aspx.cs文件的头部添加命名空间:using System.IO;usingSystem.Data.SqlClient可能也要添加一下。

上面都准备好后,下面进行数据保存前对保存文件的一些设置:

设置输出文件的类型

//输出类型为Word
Response.ContentType = "application/ms-word";
//输出类型为Excel
//Response.ContentType = "application/ms-excel";

设置编码方式和内容保存的形式
Response.ContentEncoding = System.Text.Encoding.UTF8;

//设置显示的字和内容要存的形式
Response.Charset = "Word文档";

设置保存为的文件名

string dateStr = DateTime.Now.ToString("yyyyMMddHHmmss");
string fileName=System.Web.HttpUtility.UrlEncode("要保存为的文件名" +dateStr, System.Text.Encoding.UTF8);
        
//设置保存的文件名
Response.AppendHeader("content-disposition", "attachment;filename=\"" + fileName + ".doc\"");

至此保存前文件的一些设置已经完成了,下面就是将GridView中的数据保存到Word/Excel中

StringWriter oStringWriter = new StringWriter();
HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);

GridView1.RenderControl(oHtmlTextWriter);        
Response.Write(oStringWriter.ToString());
若想将多个GridView中的数据保存到同一个Word文件中,只需将之前的StringWriter、HtmlTextWriter对象释放,重新实例化一下就可以了,若不重新实例化GridView1中的数据会再写入一次。

oStringWriter = new StringWriter();
oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
GridView2.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
下面附上protected void Button1_Click(object sender, EventArgs e)中的完整代码

    protected void Button1_Click(object sender, EventArgs e)
    {
        //清除客户端当前显示
        Response.Clear();
        Response.Buffer = true;

        //输出类型为Word
        Response.ContentType = "application/ms-word";
        //输出类型为Excel
        //Response.ContentType = "application/ms-excel";

        Response.ContentEncoding = System.Text.Encoding.UTF8;

        //设置显示的字和内容要存的形式
        Response.Charset = "Word文档";

        string dateStr = DateTime.Now.ToString("yyyyMMddHHmmss");
        string fileName=System.Web.HttpUtility.UrlEncode("A卷" +dateStr, System.Text.Encoding.UTF8);
        
        //设置保存的文件名
        Response.AppendHeader("content-disposition", "attachment;filename=\"" + fileName + ".doc\"");
        this.EnableViewState = false;

        StringWriter oStringWriter = new StringWriter();
        HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);

        GridView1.RenderControl(oHtmlTextWriter);        
        Response.Write(oStringWriter.ToString());

        oStringWriter = new StringWriter();
        oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
        GridView2.RenderControl(oHtmlTextWriter);
        Response.Write(oStringWriter.ToString());

        Response.End(); 
    }



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值