본문 바로가기
JS,HTML,CSS

SheetJS (xlsx.js) 라이브러리 사용하여 화면 엑셀 다운로드

by 유반짝 2025. 8. 5.

다음 화면을 엑셀다운로드하면 웹페이지 형식이 아닌 xlsx 엑셀파일로 다운로드 되도록

다운로드 되는 컬럼도 품목코드, 품목명, 규격, 표준원가만 다운로드하는 방법

엑셀다운로드 결과

코드

    // 표준원가 양식 다운로드 2025-08-04
    STD_COST_DOWN: function (caller, act, data) {
		var inspcDt =  getNowDt().replace(/-/gi,"");
	    var fullData = fnObj.gridView01.target.list;
	    
	    // 1. 내보낼 컬럼 키 정의
	    const exportKeys = ['itemCd', 'itemNm', 'spec', 'stdPrice'];

	    // 2. 데이터 필터링
	    const filteredData = fullData.map(row => {
	        const filteredRow = {};
	        exportKeys.forEach(key => filteredRow[key] = row[key]);
	        return filteredRow;
	    });	    
	    // 3. 워크시트 생성 (컬럼 순서 지정)
	    const ws = XLSX.utils.json_to_sheet(filteredData, { header: exportKeys });

	    // 4. 컬럼명 사용자 지정 (엑셀 헤더명 변경)
	    XLSX.utils.sheet_add_aoa(ws, [["품목코드", "품목명", "규격", "표준원가"]], { origin: "A1" });
	    // 4-1. 컬럼 너비 지정
	    ws['!cols'] = [
	        { wch: 12 },
	        { wch: 30 },
	        { wch: 20 },
	        { wch: 15 } 
	    ];
	    // 5. 워크북 생성 및 시트 추가
	    const wb = XLSX.utils.book_new();
	    XLSX.utils.book_append_sheet(wb, ws, "표준원가 리스트");

	    // 6. 파일 다운로드
	    XLSX.writeFile(wb, "표준원가양식_" + inspcDt + ".xlsx");	    
    },