javascript
[js] 데이터 엑셀로 내려받기
TTTGGG
2024. 7. 22. 13:53
728x90
반응형
SMALL
먼저 FileSaver, xlsx.full 라이브러리 다운로드
<script src="~/js/FileSaver.min.js" asp-append-version="true"></script>
<script src="~/js/xlsx.full.min.js" asp-append-version="true"></script>
// 엑셀 다운로드 버튼 클릭 이벤트
// 컬럼 이름과 필드를 지정합니다.
var columns = [
{ field: 'commGrp', title: '그룹' },
{ field: 'commCd', title: '코드' },
{ field: 'commNm', title: '코드명' },
{ field: 'commRmk', title: '비고' },
{ field: 'useYN', title: '사용여부' },
{ field: 'regDtm', title: '등록일시' },
{ field: 'regUsr', title: '등록자' },
{ field: 'uptDtm', title: '갱신일시' },
{ field: 'uptUsr', title: '갱신자' }
];
fetch(url, {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
// 엑셀 내보내기 함수 호출
exportAllDataToExcel(data.data, title, columns);
})
.catch(error => console.error('Error:', error));
// Excel Download
function exportAllDataToExcel(data, title, columns) {
var currentDateTime = getCurrentDateTime().replace(/[ :\-]/g, '');
var filename = title + "_" + currentDateTime + ".xlsx";
if (data && Array.isArray(data)) {
// 지정된 컬럼들만 포함하도록 데이터를 필터링합니다.
var filteredData = data.map(item => {
var filteredItem = {};
columns.forEach(col => {
if (item.hasOwnProperty(col.field)) {
filteredItem[col.field] = item[col.field];
}
});
return filteredItem;
});
// 엑셀 헤더 설정
var header = {};
columns.forEach(col => {
header[col.field] = col.title;
});
filteredData.unshift(header); // 헤더를 데이터의 첫 번째 행에 추가
var ws = XLSX.utils.json_to_sheet(filteredData, { skipHeader: true });
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
// 워크북을 바이너리 형식으로 작성합니다.
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
// 생성된 바이너리 데이터를 사용하여 파일을 다운로드합니다.
saveAs(new Blob([s2ab(wbout)], { type: "application/octet-stream" }), filename);
} else {
console.error('서버에서 반환된 데이터가 배열 형식이 아닙니다.');
}
}
결과
728x90
반응형
LIST