Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- React FileSaver
- fe
- React file-saver
- React srcSet
- React XLSX
- React
- 리액트 엑셀다운로드
- React AgGrid
- useResetREcoilState()
- js mac에서 파일 첨부시 파일명이 깨짐
- Typescript
- useRecoilStateLoadable()
- js 파일명 꺠짐
- atom()
- react mac 파일명 깨짐
- Recoil 상태
- 리액트 엑셀다운
- React ag-Grid
- Cookie
- selector()
- react 파일명 깨짐
- javascript
- ag-Grid 체크박스
- React Excel
- useRecoilState()
- useSetRecoilState()
- useRecoilValue()
- React ExcelDownload
- Next.js
- React 그리드
Archives
- Today
- Total
나만의 개발 공간
React 엑셀 다운로드 본문
내가 자주 사용하는 엑셀 파일로 다운로드를 하기위해
XLSX와 FileSaver를 다운받아야한다.
XLSX는 복잡한 스프레드시트에서 유용한 데이터를 추출하고 새 스프레드시트를 생성하기 위해 검증된 오픈 소스이다.
https://www.npmjs.com/package/xlsx
FileSaver는 크기 제한보다 더 큰 파일을 저장해야 하거나 RAM이 충분하지 않은 경우 새로운 스트림의 힘으로 비동기식으로 직접 데이터를 저장할 수 있다.
https://www.npmjs.com/package/file-saver
코드는 아래와 같다.
import * as FileSaver from "file-saver";
import * as XLSX from "xlsx";
const ReactExcelDownload = () => {
const data = [
{
id: 1,
title: '집에 가고싶어요',
content: '너무 졸려 가고싶어요.'
}, {
id: 2,
title: '오늘은 뭐하지',
content: '퇴근 하고 뭐할까??'
}, {
id: 3,
title: '저녁은 어떤거로?',
content: '저녁은 치킨인가 피자인가 고민이다.'
}
]
const excelFileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
const excelFileExtension = '.xlsx';
const excelFileName = '작성자';
const excelDownload = (excelData: any) => {
const ws = XLSX.utils.aoa_to_sheet([
[`작성자_kkhcode`],
[],
['제목', '내용']
]);
excelData.map((data: any) => {
XLSX.utils.sheet_add_aoa(
ws,
[
[
data.title,
data.content
]
],
{origin: -1}
);
ws['!cols'] = [ <-- 행 사이즈
{ wpx: 200 },
{ wpx: 200 }
]
return false;
});
const wb: any = {Sheets: { data: ws }, SheetNames: ['data']};
const excelButter = XLSX.write(wb, { bookType: 'xlsx', type: 'array'});
const excelFile = new Blob([excelButter], { type: excelFileType});
FileSaver.saveAs(excelFile, excelFileName + excelFileExtension);
}
return (
<div>
<button onClick={() => excelDownload(data)}>엑셀 다운로드</button>
</div>
);
};
작성하게 되면 화면은 아래와 같이 나온다.
버튼을 클릭하게 되면 아래와 같이 엑셀파일로 다운로드를 받을 수 있는 것을 확인할 수 있다.
엑셀 파일을 열어보게 되면
즉, excelFileName은 파일 다운로드를 받을 때의 파일명, excelFileExtension은 파일 확장자를 나타내며,
[`작성자_kkhcode`]는 첫번째 행에 나오게 된다. 중간에 빈 [] 값을 준 이유는 빈 열을 만들기 위해 사용했다.
ws['!cols']는 엑셀 파일의 행 사이즈를 조절할 수 있게된다.
'React' 카테고리의 다른 글
Recoil 래퍼런스 API 상태 정리 (0) | 2023.09.06 |
---|---|
React Mac에서 파일 첨부시 파일명이 ㅎㅏㄴㄱㅡㄹ처럼 나온다면 (0) | 2023.01.12 |
React ag-Grid 사용하기 (0) | 2022.05.20 |
React img srcSet과 a태그 스크롤 (0) | 2022.05.20 |
React react-cookie (0) | 2022.03.25 |
Comments