Javascript
자바스크립트 엑셀 다운로드 방법
jellyChoi
2019. 4. 30. 19:14
오늘의 포스팅은 자바스크립트로 HTML 테이블을 엑셀로 다운로드하는 기능에 대해 알아보겠습니다 ^~^
백엔드 언어 없이 자바스크립트로만 구현이 가능해서 간편하고 손쉽게 만들 수 있습니다.
엑셀 다운로드를 하려면 다운로드받을 테이블이 필요하겠죠?
바로 만들어줍니다.
<div class="main-content">
<div class="main-content-inner">
<div class="page-content">
<table id="table">
<caption>Excel Download</caption>
<thead>
<tr>
<th></th>
<th>sample</th>
<th>sample</th>
<th>sample</th>
</tr>
</thead>
<tbody>
<tr>
<th>sample</th>
<td>Text</td>
<td>Text</td>
<td rowspan="2">Text</td>
</tr>
<tr>
<th>sample</th>
<td>Text</td>
<td>Text</td>
</tr>
<tr>
<th>sample</th>
<td>Text</td>
<td>Text</td>
<td>Text</td>
</tr>
</tbody>
</table>
</div>
<button type="button" onclick="fnExcelReport('table','title');">Excel Download</button>
</div>
</div>
<style>
table {
width: 100%;
table, th, td {
border: 1px solid;
}
</style>
아주 허접한 테이블이 완성되었습니다!
하지만 다운받는데는 아무런 문제가 없습니다^~^
다음은 다운로드 버튼에 붙어있는 onclilck 이벤트를 만들어 주어야겠죠?
아래 함수를 만들어주고 button onclick이벤트에서 함수를 호출할 때
파라미터를 각각 테이블(혹은 div)의 id, 다운로드할 엑셀 파일의 파일명으로 넣어줍니다.
fnExcelReport('table', 'title') 저는 이렇게 넣어주겠습니다.
만들다가 크롬에서는 잘 되는데 익스플로러에서 다운로드가 잘 되지 않아
한참을 삽질하다가 아래 조건을 더 붙였습니다.
이제 어느 브라우저에서든 다 잘 받아지네요 ^~^
<script>
function fnExcelReport(id, title) {
var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
tab_text = tab_text + '<head><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';
tab_text = tab_text + '<xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'
tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';
tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';
tab_text = tab_text + "<table border='1px'>";
var exportTable = $('#' + id).clone();
exportTable.find('input').each(function (index, elem) { $(elem).remove(); });
tab_text = tab_text + exportTable.html();
tab_text = tab_text + '</table></body></html>';
var data_type = 'data:application/vnd.ms-excel';
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
var fileName = title + '.xls';
//Explorer 환경에서 다운로드
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {
if (window.navigator.msSaveBlob) {
var blob = new Blob([tab_text], {
type: "application/csv;charset=utf-8;"
});
navigator.msSaveBlob(blob, fileName);
}
} else {
var blob2 = new Blob([tab_text], {
type: "application/csv;charset=utf-8;"
});
var filename = fileName;
var elem = window.document.createElement('a');
elem.href = window.URL.createObjectURL(blob2);
elem.download = filename;
document.body.appendChild(elem);
elem.click();
document.body.removeChild(elem);
}
}
</script>
이제 excel download 버튼을 누르면 다운로드가 가능합니다.
아주 잘 받아졌습니다!
여기까지 간편하게 자바스크립트로 엑셀 다운로드하는 방법을 알아보았습니다.
모두 즐거운 코딩 하세요^~^