웹에서 엑셀 다운로드 하는 건 생각만 해도 아찔하다.
그 HTML 마크업을 다 코딩하려면 으~~
그래서 이렇게 저렇게 궁리를 해보았다.
일단 IE를 제외한 솔루션은 아래 링크를 통해 확인해 보면 간단히 구현할 수 있다.
http://www.jquerybyexample.net/2012/10/export-table-data-to-excel-using-jquery.html
와~~ 박수쳐 드리자.
그런데 중간에 IE는 안된다고 나온다.
아래 추가로 IE용으로 구현방법이 설명되어 있어서 구현했더니 잘 되더라~
일단
test.aspx 쪽 소스를 구현한다.
---------------- test.aspx --------------------------------------
<input type="hidden" id="hdnData" runat="server" />
<div id="grid">
<table>
<tr><td>111</td><td>222</td><td>333</td></tr>
<tr><td>111</td><td>222</td><td>333</td></tr>
<tr><td>111</td><td>222</td><td>333</td></tr>
</table>
</div>
<asp:Button ID="excelDown" OnClientClick="excelClick();" runat="server" OnClick="excelDown_Click" Text="엑셀" />
<script>
function excelClick() {
var tblHTML = $('#div_grid').html();
tblHTML = escape(tblHTML);
$('#ctl00_ContentPlaceHolder1_hdnData').val(tblHTML);
}
</script>
위처럼 적당히 각자의 소스에 추가한다. 아래는 cs 쪽 소스이다.
-------------------------- test.aspx.cs ---------------------------------
어쩌구 저쩌구....
#region 엑셀 다운로드
/// <summary>
/// 엑셀 다운로드
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void excelDown_Click(object sender, EventArgs e)
{
string file_name = DateTime.Now.ToString("yyyyMMddhhmmss") + "_다운로드.xls";
//한글깨짐으로 인코딩
file_name = HttpUtility.UrlEncode(file_name, System.Text.Encoding.UTF8).Replace("+", "%20");
string data = hdnData.Value;
data = HttpUtility.UrlDecode(data);
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + file_name);
Response.Charset = "";
Response.ContentType = "application/excel";
HttpContext.Current.Response.Write(data);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
#endregion
소스는 끝이다. 화면에 있는데로 엑셀로 다운로드할 수 있다.
사실 jQuery는 사용하지 않아도 된다.
아참, 이건 실제로는 엑셀이 아니고 엑셀에서 보이는 html인건 다들 아시죠?
피드백 주세요~
'프로그래밍 > WEB' 카테고리의 다른 글
HTML을 특수문자로 바꾸기, 그리고 Kwicks (0) | 2011.05.24 |
---|---|
[스타일시트] 영문 자동줄바꿈 (0) | 2010.12.08 |
[스타일시트] Span 태그에 Width 스타일 주기 (2) | 2010.12.08 |