일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jsr 296
- GPS
- sencha touch
- ibsheet
- JSON
- jQuery
- oracle
- 선택적조인
- appspresso
- 가우스
- MySQL
- PLSQL
- MFC
- tomcat
- Eclipse
- Ajax
- rowspan
- 전자정부프레임워크
- Struts
- dock
- node.js
- PHP
- Android
- phonegap
- WebLogic
- Google Map
- Spring
- iBATIS
- swingx
- JDOM
- Today
- Total
Where The Streets Have No Name
JavaScript를 통한 Excel 파일 저장 본문
테이블 같은 것들 중에 DataGrid나 DataList, Repeater가 아닌 경우 엑셀 다운로드를 붙여달라고 하면
가슴이 콱 답답해지시는 분들을 위한 간단한 코드입니다.
IE에서만 동작(엑셀이 windows 니까 ..ㅡㅡ;; 거의 IE겠죠 ..)
IFRAME 유동적으로 만들어서 거기다 해당 객체의 데이터를 넣고
해당 객체는 saveExcel(''객체아이디'') 로 넣으시면 됩니다.
파일명을 강제하실 경우 saveExcel(''객체아이디'',''저장파일명.xls'') 로 넣으시면 됩니다.
해당 IFRAME을 execCommand 이용해서 html 문서를 확장자 .xls로 저장합니다.
(저장 창이 header에서 excel 타입을 강제한거랑은 조금 다르게 생겨먹었습니다. ㅋㅋㅋ)
우야둔둥..이건 1원으로는 너무 싼듯해서..10원짜리 팁입니다. ㅋㅋ
아래는 소스와 예제입니다.
<script language="javascript">
/*
암때나 맘때루 고쳐서 사용하셔도 됩니다.
대충 후려갈겼습니다 -_-;
CopyRight ⓒ Thisisx since 2006.11.30
*/
function saveExcel(targetId,SaveFileName)
{
if(document.all)
{
if(!document.all.excelExportFrame) // 프레임이 없으면 만들자~!
{
var excelFrame=document.createElement("iframe");
excelFrame.id="excelExportFrame";
excelFrame.position="absolute";
excelFrame.style.zIndex=-1;
excelFrame.style.top="-10px";
excelFrame.style.left="-10px";
excelFrame.style.height="0px";
excelFrame.style.width="0px";
document.body.appendChild(excelFrame); // 아이프레임을 현재 문서에 쑤셔넣고..
}
var frmTarget = document.all.excelExportFrame.contentWindow.document; // 해당 아이프레임의 문서에 접근
// content 타입은 넣으면 언젠가 MS에서 엑셀로 바로 열어주지 않을까해서.. 괜히 한번 선언해봤습니다.
frmTarget.open("application/vnd.ms-excel","replace");
frmTarget.write(''<html>'');
frmTarget.write(''<meta http-equiv=\"Content-Type\" content=\"application/vnd.ms-excel; charset=euc-kr\">\r\n''); // 별로..
frmTarget.write(''<body>'');
frmTarget.write(document.getElementById(targetId).outerHTML); // tag를 포함한 데이터를 쑤셔넣고
frmTarget.write(''</body>'');
frmTarget.write(''</html>'');
frmTarget.close();
//frmTarget.charset="UTF-8"; // 자 코드셋을 원하는걸로 맞추시고..
frmTarget.charset="euc-kr";
frmTarget.focus();
if(!SaveFileName)
{
SaveFileName=''test.xls'';
}
frmTarget.execCommand(''SaveAs'',''false'',SaveFileName); // 저장을 호출합니다.
}
else
{
alert(''IE만 가능합니다.'');
}
}
</script>
<table id="tblMain">
<tr>
<td>웅냐 </td>
</tr>
</table>
<input type="button" value="excel" onclick="saveExcel(''tblMain'')">