GridView의 데이터를 Excel로 내보내기

8956 단어 GridView
페이지의 데이터 바인딩 컨트롤(예: GridView, ListView 등)의 데이터를 Excel로 내보내는 것은 매우 일반적인 기능입니다. Google 관련 자료는 다음과 같습니다.
1. 사용자 정의 방법: ToExcel(Control ctl,string FileName)
이 방법은 데이터 연결 컨트롤의 데이터를 Excel로 내보내는 것입니다.
private void ToExcel(Control ctl, string FileName)

    {

        HttpContext.Current.Response.Charset = "UTF-8";

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

        HttpContext.Current.Response.ContentType = "application/ms-excel";

        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);

        ctl.Page.EnableViewState = false;

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

        HtmlTextWriter hw = new HtmlTextWriter(tw);

        ctl.RenderControl(hw);

        HttpContext.Current.Response.Write(tw.ToString());

        HttpContext.Current.Response.End();

    }

2. LinkButton을 두 번 클릭하고 버튼에 다음 코드를 기록합니다.
protected void LinkButton1_Click(object sender, EventArgs e)

    {

        GridView1.AllowPaging = false;

        GridView1.AllowSorting = false;

        bang();

        ToExcel(GridView1, "data.xls");

        GridView1.AllowPaging = true;

        GridView1.AllowSorting = true;

        bang();

       

    }

3. 물론입니다. 사용자 정의 귀속 방법도 있습니다bang ().이 뱅 () 을 쓰면 데이터를 연결할 때 많은 코드를 쓸 필요가 없습니다.bang () 코드 약.
  
사실 데이터를 Excel로 내보내는 것은 매우 자주 사용하는 기능일 것이다. 서로 다른 페이지에서 코드를 한 번 쓰지 않도록 우리는 그것을 클래스 모듈로 만들어서 App_에 저장할 수 있다코드 폴더에서 이렇게 하면 필요할 때 직접 인용할 수 있다.
App_Code : using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

//

using System.Web.UI;



public class toExcel

{

public toExcel()

{

//

//TODO:  

//

}

    public Control ctl;

    public string FileName;

    public void exportExcel(Control ctl, string FileName)

    {        

        HttpContext.Current.Response.Charset = "UTF-8";

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

        HttpContext.Current.Response.ContentType = "application/ms-excel";

        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);

        ctl.Page.EnableViewState = false;

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

        HtmlTextWriter hw = new HtmlTextWriter(tw);

        ctl.RenderControl(hw);

        HttpContext.Current.Response.Write(tw.ToString());

        HttpContext.Current.Response.End();

    }

}

그런 다음 CS 파일에서 클래스 모듈을 참조합니다.
protected void LinkButton1_Click(object sender, EventArgs e)

    {

        GridView1.AllowPaging = false;// 

        GridView1.AllowSorting = false;// 

        bind();



        toExcel Export=new toExcel(); Control ctl = Export.ctl = GridView1; string FileName = Export.FileName = " .xls"; Export.exportExcel(ctl, FileName);



        GridView1.AllowPaging = true;// 

        GridView1.AllowSorting = true;// 

        bind();

    }

 
주의!이 오류 메시지가 나타나기 쉽습니다.
 

"GridView" 유형의 컨트롤 "ctl00_ContentPlaceHolder1_GridView1" 은 runat=server가 있는 창 태그에 넣어야 합니다


 
만약 그렇다면 하나의 방법을 다시 불러와야 한다(방법에는 아무것도 쓰지 않으면 된다.):
 
 public override void VerifyRenderingInServerForm(Control control)

    {

        //base.VerifyRenderingInServerForm(control);

    }

이렇게 하면 잘못이 없을 것이다.
클래스 모듈을 활용하면 excel로 내보내야 하는 모든 페이지에서 간단한 인용만 하면 됩니다. 주로 다음과 같습니다.
     toExcel Export=new toExcel(); Control ctl = Export.ctl = GridView1; string FileName = Export.FileName = " .xls"; Export.exportExcel(ctl, FileName);

 
Excel로 내보낸 다른 글:http://www.cnblogs.com/ibgo/p/3531799.html

좋은 웹페이지 즐겨찾기