sheetJS를 활용하여 Table data를 Excel로추출하기
sheetJS 사용을 위해 CDN을 이용하였다.
script(src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.3/xlsx.full.min.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js")
exportToExcel.js 구성
함수를 연결할 element 먼저 찾기
const excelDownload = document.querySelector('#excelDownload');
document.addEventListener('DOMContentLoaded', ()=>{
excelDownload.addEventListener('click', exportExcel);
});
Export To Excel 함수
let today = new Date();
const year = String(today.getFullYear());
const month = String(today.getMonth()+1).padStart(2,"0");
const day = String(today.getDate()).padStart(2,"0");
const hours = String(today.getHours()).padStart(2,"0"); // 시
const minutes = String(today.getMinutes()).padStart(2,"0"); // 분
const te = year + "-"+month+"-"+day+" "+hours+"시 "+minutes+"분";
function exportExcel(){
// step 1. workbook 생성
var wb = XLSX.utils.book_new();
// step 2. 시트 만들기
var newWorksheet = excelHandler.getWorksheet();
// step 3. workbook에 새로만든 워크시트에 이름을 주고 붙인다.
XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName());
// step 4. 엑셀 파일 만들기
var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'});
// step 5. 엑셀 파일 내보내기
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName());
}
var excelHandler = {
getExcelFileName : function(){
return te+".xlsx"; //파일명
},
getSheetName : function(){
return 'Sheet'; //시트명
},
getExcelData : function(){
const table = document.getElementById('myTable');
return table; //TABLE id
},
getWorksheet : function(){
return XLSX.utils.table_to_sheet(this.getExcelData());
}
}
function s2ab(s) {
var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer
var view = new Uint8Array(buf); //create uint8array as viewer
for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet
return buf;
}
아래 블로그를 보고 따라 해보았다.
결과는 아주 성공적이였으며 , 추후에 mongoDB와 연계하여 DB데이터를 Excel로 Export 해보겠다.
설명이 아주 잘되있는 블로그
SheetJS : JS로 엑셀 파일 쓰기 예제 | 까오기님 블로그