• 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



  • 相关阅读:
    每日英语:Surviving a Conference Call
    每日英语:Boost Your Balance; Avoid Falls
    每日英语:Proactive Advice for Dealing With Grief: Seek Out New Experiences
    每日英语:Tencent Fights for China's Online Shoppers
    每日英语:5 Things to Know About Missing Malaysia Airlines Flight and Air Safety
    每日英语:Does China Face a Reading Crisis?
    每日英语:Six Ways to Modernize Your Car
    每日英语:Welcome to the Global Middle-Class Surge
    阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏
    SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储
  • 原文地址:https://www.cnblogs.com/hishanghai/p/2677512.html
Copyright © 2020-2023  润新知