Table export to excel

Woohyun·2022년 10월 24일
0

NodeJS

목록 보기
1/5
post-thumbnail

Export to Excel

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로 엑셀 파일 쓰기 예제 | 까오기님 블로그

profile
개발자 지망생

0개의 댓글