[Sheetjs] 1개의 시트에 여러개의 테이블 넣기

2023. 12. 4. 16:33Javascript

 

상황

 

1. html 테이블이 동적으로 생성 되는 중

2. 동적 table을 클라이언트 단에서 엑셀파일로 만들고 싶었음 (굳이 서버를 거쳐야하나..?)

3. name 혹은 table 요소 선택자로 다 가져와서 sheetjs로 엑셀파일을 만들수 있게 하고 싶었음

 


<코드>

//개발가이드 액셀 다운로드 기능
  function excelDown() {
    //객체 생성(excel)
    var wb = XLSX.utils.book_new();
    //html 모든 테이블 선택
    var tables = document.querySelectorAll('table');
    // 1개의 배열에 모든 데이터를 담기 위해
    var combinedData = [];
 

    tables.forEach(function (table, index) {
      var ws = XLSX.utils.table_to_sheet(table);
      //헤더 1에 데이터가 있음 (나머지는 속성값들)
      var data = XLSX.utils.sheet_to_json(ws, { header: 1 });
      //한줄 띄어쓰기
      data.push([' ', ' '])
      combinedData = combinedData.concat(data);
    });
 

    //시트 생성
    var combinedSheet = XLSX.utils.aoa_to_sheet(combinedData);
 
    //시트에 데이터 입력 (엑셀 객체,데이터가 담긴 시트,시트 명)
    XLSX.utils.book_append_sheet(wb, combinedSheet, `시트명`);

    //최종 파일
    XLSX.writeFile(wb, `최종 파일 이름.xlsx`);
  }
728x90