사용자에게 내역을 전달해주는 것은 대부분 엑셀을 사용합니다.
엑셀을 업로드 하거나 다운로드 기능을 제공해주는 라이브러리가 있는데, 바로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');
- const workSheetData = [['hello', 'test']];
- excel sheet 에 저장될 데이터를 저장합니다.
- 현재 데이터를 저장하는 방법을
aoa(array of array)
로 사용하였기 때문에 2차 배열로 저장합니다
- 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.
- excel sheet 를
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' 라는 이름을 가진 파일을 생성합니다.
- const workSheetData = [['hello', 'test']];
결론
위에 설명드린 내용과 기능 외에도 상당히 많은 기능과 옵션이 존재합니다.
AutoFilter 외에도 병합, 정렬, 크기 제어 등 다양한 기능이 존재하기 때문에 위의 github 를 참고하시면 확장하여 개발하실 수 있습니다.
'JAVASCRIPT' 카테고리의 다른 글
[Javascript] IE11 에서 SCRIPT10002 와 SCRIPT10009 콘솔 오류 발생하는 문제 해결 (0) | 2019.11.06 |
---|---|
[Javascript] Webpack ? Bundle ? (0) | 2019.11.02 |
[Javascript] 새로고침 시 알림팝업 띄우고, 뒤로가기 버튼 클릭 시 띄우지 않기 (0) | 2019.10.02 |
[Javascript] CrytptoJS 암호화 시 TypeError: Converting circular structure to JSON 나는 문제 해결 (0) | 2019.09.24 |
[Javascript] sessionStorage 에 객체 저장하고 꺼내기 (0) | 2019.09.24 |