본문 바로가기

프로그래밍언어/ASP.NET

Gridview 를 Excel 파일로 Export 하기


 shakeJ 상업적 용도 금지

출처: mnworld.co.kr

GridView에 있는 내용을 보안 상의 이유로 백업이 필요한 경우가 있다.

Gridview는 테이블, 표로 되어있기에, 엑셀로 백업하고, csv파일(엑셀파일 중 하나)로 SQL에 데이터 복원도 가능하다.

 

본인도, 이 기능을 추가하기 위해 인터넷을 뒤졌는데, 대부분이 외국 사이트였다.

(외국이 확실히 발전되어있구나…하는 생각과 함께, 영어를 잘해야 겠다는 생각도…)

 

때문에 외국 소스 사용 시 한글이 자주 깨진다고 하는데 본인은 이 소스를 사용했을 때 전혀 깨짐도 없이 저장되는

것을 볼 수 있었다. 아 ! 경고창은 가볍게 무시하도록 하자.

어떤 페이지.aspx.cs <~ cs파일에 넣도록 하자.

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

BindData();

}

}

 

private void BindData()

{

string query = "SELECT 인이 추가하고싶은 FROM 추가하고자 하는 테이블 ";

SqlConnection myConnection = new SqlConnection(ConnectionString);

SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);

DataSet ds = new DataSet();

ad.Fill(ds, "이블 ");

GridView1.DataSource = ds;

GridView1.DataBind();

 

}

private string ConnectionString

{

get { return @"Server=버이름\SQLEXPRESS;Database=불러오고자 하는 테이블이 있는 데이터 베이스;Trusted_Connection=true"; }

}

 

 

 

 

protected void BtnExport_Click(object sender, EventArgs e)

{

Response.Clear();

Response.AddHeader("content-disposition", "attachment;filename=기본으로 저장되는 이름.xls");

Response.Charset = "";

 

// application/vnd.xls"; 엑셀 97파일로 저장하겠다는 뜻이라고 한다.

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

Response.CacheControl = "public";

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

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

GridView1.RenderControl(htmlWrite);

Response.Write(stringWrite.ToString());

Response.End();

}

BtnExport라는 버튼을 만들어주고, OnClick에는 BtnExport_Click을 적어주자.

유용하게 사용하시길!