본문 바로가기

JAVASCRIPT

[Javascript] javascript 로 엑셀 다운로드 기능 추가하기

 

 

사용자에게 내역을 전달해주는 것은 대부분 엑셀을 사용합니다.

엑셀을 업로드 하거나 다운로드 기능을 제공해주는 라이브러리가 있는데, 바로SheetJS js-xlsx 입니다.

 

Github : https://github.com/sheetjs/sheetjs

 

 

js-xlsx 사용하기

 

  • 설치

    $ npm install xlsx

    $ bower install js-xlsx

  • browser CDN

    <script lang="javascript" src="dist/xlsx.full.min.js"></script>

     

  • 엑셀 파일 생성하기
    const workSheetData = [['hello', 'test']];
    const workSheet = XLSX.utils.aoa_to_sheet(workSheetData);
    workSheet['!autofilter'] = {ref : "A1:R11"};
    const workBook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workBook, workSheet, 'sheet title');
    XLSX.writeFile(workbook, '엑셀_파일_명.xlsx');

     

    1. const workSheetData = [['hello', 'test']];
      • excel sheet 에 저장될 데이터를 저장합니다.
      • 현재 데이터를 저장하는 방법을 aoa(array of array) 로 사용하였기 때문에 2차 배열로 저장합니다

       

    1. const workSheet = XLSX.utils.aoa_to_sheet(workSheetData);
      • excel sheet 를 Array of Array format 의 데이터로 생성합니다.

      총 5개의 format 을 제공합니다.

      • aoa_to_sheet converts an array of arrays of JS data to a worksheet.
      • json_to_sheet converts an array of JS objects to a worksheet.
      • table_to_sheet converts a DOM TABLE element to a worksheet.
      • sheet_add_aoa adds an array of arrays of JS data to an existing worksheet.
      • sheet_add_json adds an array of JS objects to an existing worksheet.

     

    3. workSheet['!autofilter'] = {ref : "A1:R11"};

    • excel sheet 에 A1 부터 R11 에 해당하는 값에 대한 autoFilter 기능을 추가해줍니다.
    • autoFilter 를 사용하고자 할 때만 추가하시면 됩니다.

    4.const workBook = XLSX.utils.book_new();

    • scratch 로 부터 새로운 workbook 을 생성합니다
    • workbook 은 sheetNames 을 가지며 Sheets 와 sheet name 가 매핑된 값들을 가지고 있습니다.

    다음과 같은 파일확장자 형태로 parsing 기능도 제공합니다

    • XLSX.utils.sheet_to_csv generates CSV
    • XLSX.utils.sheet_to_txt generates UTF16 Formatted Text
    • XLSX.utils.sheet_to_html generates HTML
    • XLSX.utils.sheet_to_json generates an array of objects
    • XLSX.utils.sheet_to_formulae generates a list of formulae

     

    5.XLSX.utils.book_append_sheet(workBook, workSheet, 'sheet title');

    • workbook worksheet 에 'sheet title' 을 제목으로 지정하여 추가합니다.

     

    6. XLSX.writeFile(workbook, '엑셀_파일_명.xlsx');

    • '엑셀_파일_명.xlsx' 라는 이름을 가진 파일을 생성합니다.

     

     

     

결론

위에 설명드린 내용과 기능 외에도 상당히 많은 기능과 옵션이 존재합니다.

AutoFilter 외에도 병합, 정렬, 크기 제어 등 다양한 기능이 존재하기 때문에 위의 github 를 참고하시면 확장하여 개발하실 수 있습니다.