COMPUTER_LZY

要输就输给追求,要嫁就嫁给幸福

导航

GridView Repeater导出PDF-Word-Excel

   #region Export to Word, Excel and PDF
    protected void btnword_Click(object sender, EventArgs e)
    {
        Response.AddHeader("content-disposition""attachment;filename=FileName.doc");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        // Create a form to contain the grid
        HtmlForm frm = new HtmlForm();
        GridView4.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(GridView4);
        frm.RenderControl(htmlWrite);

        //GridView1.RenderControl(htw);
        Response.Write(stringWrite.ToString());
        Response.End();
    }
    protected void btnexcel_Click(object sender, EventArgs e)
    {
        string attachment = "attachment; filename=Contacts.xls";
        Response.ClearContent();
        Response.AddHeader("content-disposition", attachment);
        Response.ContentType = "application/ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        // Create a form to contain the grid
        HtmlForm frm = new HtmlForm();
        GridView1.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(GridView1);
        frm.RenderControl(htw);

        //GridView1.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
    }
    protected void btnpdf_Click(object sender, EventArgs e)
    {
        Response.Clear();

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        GridView1.RenderControl(htw);

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition""attachment; filename=MypdfFile.pdf");
        Response.Write(sw.ToString());
        Response.End(); 
    }

 

可能的报错信息:

RegisterForEventValidation(RegisterForEventValidation can only be called during Render();  

解决方法:

当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。
有两种方法可以解决以上问题:
1.修改web.config(不推荐)<pages enableEventValidation ="false" ></pages>
2.直接在导出Execl的页面修改

<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"

 CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %> 

 

 

将DataSet导出:

 Response.Clear();

        Response.AddHeader("content-disposition",
        "attachment;filename=FileName.xls");

        Response.Charset = "";

        // If you want the option to open the Excel file without saving than

        
// comment out the line below

        
// Response.Cache.SetCacheability(HttpCacheability.NoCache);

        Response.ContentType = "application/vnd.xls";

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

        System.Web.UI.HtmlTextWriter htmlWrite =
        new HtmlTextWriter(stringWrite);

        // turn off paging 
        
//rptEquipmentList.AllowPaging = false;
        //关键是下面的代码
        GridView gv = new GridView();
        gv.DataSource = oper.ReadAll();
        gv.AllowPaging = false;
        gv.DataBind();

        gv.RenderControl(htmlWrite);

        Response.Write(stringWrite.ToString());

        Response.End(); 

 

 

posted on 2012-04-26 10:24  CANYOUNG  阅读(455)  评论(0编辑  收藏  举报