[JS] excel 다운로드

2020. 11. 8. 18:52프론트엔드/JAVASCRIPT

728x90

 

서버호출 없이 JS만으로 엑셀다운로드 구현

 

//엑셀다운로드시 호출함수
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 = $('#resultTable').clone();
//복사된 테이블에서 input 태그 제거
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);
}
}

 

728x90

'프론트엔드 > JAVASCRIPT' 카테고리의 다른 글

[JS] 문서 로드시점(onload,$(document).ready())  (0) 2020.11.19
[JS] 반복문  (0) 2020.11.11
[JS] 헤더 고정 스크롤 구현  (0) 2020.11.07
[JS 객체(Object)  (0) 2020.06.18
[JS] javascript:void(0) 과 #  (0) 2020.06.08