zoukankan      html  css  js  c++  java
  • GridView 導出 Excel 方法

    方法一:


    前台:
    <asp:Button ID="btnExcel" runat="server" Text="导出Excel"
    onclick="Button1_Click" />

    后台:
    protected void Button1_Click(object
    sender, EventArgs e)
    {
    toExecl(GridView1);
    }


    //
    将GridView数据导出到EXECL
    private void toExecl(System.Web.UI.WebControls.GridView
    gv)
    {
    Response.Clear();
    Response.Buffer = true;
    Response.Charset =
    "GB2312";
    Response.AppendHeader("Content-Disposition",
    "attachment;filename=FileName.xls"); //这里的FileName.xls可以用变量动态替换
    // 如果设置为
    GetEncoding("GB2312");导出的文件将会出现乱码!!!

    Response.ContentEncoding =
    System.Text.Encoding.UTF7;
    Response.ContentType =
    "application/ms-excel";//设置输出文件类型为excel文件。
    System.IO.StringWriter
    oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter
    oHtmlTextWriter = new
    System.Web.UI.HtmlTextWriter(oStringWriter);
    this.GridView1.RenderControl(oHtmlTextWriter);
    Response.Output.Write(oStringWriter.ToString());
    Response.Flush();
    Response.End();
    }

    public override void
    VerifyRenderingInServerForm(Control control)
    {
    //这个方法不能删除掉
    }

    注:VerifyRenderingInServerForm方法不能删掉,否则出现


    类型“GridView”的控件“ctl00_ContentPlaceHolder1_GridView1”必须放在具有
    runat=server 的窗体标记内

    如果出现下面的情况

    只能在执行 Render() 的过程中调用
    RegisterForEventValidation;


    在导出页中
    <%@ Page Language="C#" MasterPageFile="~/MasterPage2.master"
    EnableEventValidation="false"
    CodeFile="search0.aspx.cs" Inherits="search" Title="竹林风-" %>


    -------------------------------------------------------------------------------------


    方法二:


    protected void btnExportToExcel_Click(object sender, EventArgs
    e)
    {

    System.IO.StringWriter tw = new
    System.IO.StringWriter();

    HtmlTextWriter hw = new
    HtmlTextWriter(tw);
    string
    excelFileName = "MyExcel.xls";


    Context.Response.ContentType =
    "application/x-excel";

    Context.Response.AddHeader("content-disposition", "attachment;filename=" +
    Server.UrlEncode(excelFileName));

    GridView1.RenderControl(hw);

    Context.Response.Write(tw.ToString());

    Context.Response.End();
    }


    public override void
    VerifyRenderingInServerForm(System.Web.UI.Control
    control)
    {

    //处理「型别 'GridView' 的控件 'GridView1' 必须置于有 runat=server
    的窗体标记之中。」错误讯息
    // 如果要限制控件必须位于
    <form runat=server>
    标记以内,则请先呼叫这个方法,
    //
    才进行呈现,如此一来,如果控件位在标记以外,便会显示错误讯息。
    //
    会回传或是依赖已注册指令码区块的控件,应该呼叫这个方法来覆写 Control.Render
    方法。
    //
    对于服务器窗体项目有不同呈现方法的网页,可以覆写这个方法以便在不同条件下掷回例外状况。

    // 会回传或使用客户端指令码的服务器控件,
    // 如果未放在
    HtmlForm 服务器控件 (<form runat="server">)
    标记之内,将无法运作。'
    // 当它们未被封入 HtmlForm
    控件时,该控件可以呼叫这个方法来呈现清楚的错误讯息。
    }


    出处:http://nongfuit.com/html/71/201111/8056.html



  • 相关阅读:
    没吃过猪肉,却想见识下猪跑
    程序员修电脑
    csdn 新排名系统参考的部分指标
    如何快速适应新工作
    前端学习指北
    公号文章整理
    BUI 视频,音频在线播放
    原生图片上传,图片格式和图片大小处理
    获取路由拼接参数
    Axure RP9调用后端接口操作步骤
  • 原文地址:https://www.cnblogs.com/hishanghai/p/2677512.html
Copyright © 2011-2022 走看看