从GridView把数据导成Excel会出现的问题

 

1.当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。
解决方法:EnableEventValidation = "false" 加上这个

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

2.必须放在具有 runat=server 的窗体标记内。

解决方法:加上

public override void VerifyRenderingInServerForm(Control control)
    {
    }

代码如下:

   protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Clear();//清除缓冲区流中所有内容的输出
        Response.Buffer = true;//获取和设置一个值,该值指出是否缓冲输出,并在完成处理整个响应之后将其发送
        Response.Charset = "GB2312";//获取和设置输出流的http字符集;
        Response.AppendHeader("Content-Disposition", "attachment;filename = FileName.xls");//将http头添加到输出流
        //如果设置成GB2312导出的将是乱码
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件
        System.IO.StringWriter oStringWriter = new StringWriter();//实现一个用于将信息写入字符串 TextWriter 该信息存储在基础StringBuilder 中
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);//将标记字符和文本写入到asp.net控件输出流
        this.gv_Repository_PathologyInfo.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
        Response.Flush();//向客户端发送所有输出流
        Response.End();//结束

      

    }
    public override void VerifyRenderingInServerForm(Control control)
    {
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值