.NET C#에서 엑셀 내려받기
닷넷 C# gridView를 가장 간단하게 엑셀 내력받기 할 수 있는 방법 중 하나는 RenderControl() 함수를 사용하는 것입니다.
GridView 내용 위에 타이틀까지 추가하여 두개의 GridView의 내용을 엑셀파일로 내려 받는 기능을 구현 해 보도록하겠습니다.
소스 내에 주석으로 설명을 드리도록 하겠습니다.
using System.IO;
#region 엑셀 내려받기 버튼 클릭
protected void ibtnExcel_Click(object sender, ImageClickEventArgs e)
{
string strTitle = "파일 명.xls"; //파일명을 설정 합니다.
Response.Clear(); //Response를 깨끗하게 비워 줍니다. 즉, 클라이언트로의 응답 내용을 지워 줍니다.
// 처음 설정하는 부분은 Response.AddHeader 부분입니다 AddHeader 함수를 통해 Response헤더 부분에
// 문서의 제목을 설정 하게 됩니다.
// 참고Tip : Replace("+", "%20") 는 파일 명이 공백일 때 UrlEncode 을 하면 + 로 변환되기 때문이죠
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strTitle).Replace("+", "%20"));
// ContentType을 설정해 줍니다. 당연히 excel로 설정합니다
Response.ContentType = "application/vnd.ms-excel";
//한글이 정상적으로 표시 되도록 인코딩을 UTF-8로 설정 합니다.
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
//StringWriter형으로 stringWriter를 생성, 생성한 stringWriter를 넘겨 HtmlTextWriter형으로
//htmlWriter을 생성하였습니다.
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
//엑셀에서 자동으로 숫자로 변환하는 것을 금지하도록 조치 합니다.
string strStyle = @"<style>td { mso-number-format:\@; } </style>";
//그리드뷰1 타이틀을 넣습니다.
htmlWriter.Write("▒ 그리드뷰1 내용 타이틀을 넣어 봤습니다.");
//그리드뷰1의 내용을 htmlWriter에 담아 줍니다.
grdView1.RenderControl(htmlWriter);
//그리드 사이에 두줄 띄울려고 넣어 보았습니다
htmlWriter.Write("<br /><br />");
htmlWriter.Write("▒ 그리드뷰2 내용 타이틀을 넣어 봤습니다. "); // 그리드뷰2 타이틀을 넣습니다.
grdView2.RenderControl(htmlWriter); //그리드뷰2의 내용을 htmlWriter에 담아 줍니다.
//strStyle 내용과, 타이틀과 그리드 내용을 담은 stringWriter을 Respose.Write 해 줍니다
Response.Write(strStyle);
Response.Write(stringWriter.ToString());
//Response를 종료 해주면 엑셀 내려받기가 됩니다.
Response.End();
}
#endregion
여기까지 RenderControl 함수를 이용하여 엑셀 내려받기를 구현 해 보았습니다
'프로그래밍 > JAVA, .NET, 기타' 카테고리의 다른 글
[c#오류] DropDownList 여러 항목을 선택할 수 없습니다 (6) | 2018.05.04 |
---|---|
자바스크립트 prompt 함수 예제 (6) | 2018.01.23 |
[C#] LINQ 활용 방법 (0) | 2017.12.18 |
[닷넷] 웹 타임아웃 문제 해결하기 (0) | 2017.10.10 |
[BAT] 명령어 간단한 예제로 맛보기 (0) | 2017.09.04 |