package com.interplug.qcast.util; import com.fasterxml.jackson.databind.exc.InvalidFormatException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.*; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.sf.jxls.exception.ParsePropertyException; import org.jxls.common.Context; import org.jxls.util.JxlsHelper; import org.springframework.stereotype.Component; @Slf4j @Component @RequiredArgsConstructor public class ExcelUtil { /** * jxls을 이용한 엑셀다운로드 * * @param request HttpServletRequest * @param response HttpServletResponse * @param map 엑셀 출력데이터 * @param list 엑셀 출력 목록 데이터 * @param fileName 다운로드 파일명 * @param templateFileName * @throws ParsePropertyException * @throws InvalidFormatException */ public void download( HttpServletRequest request, HttpServletResponse response, Map map, List> list, String fileName, String templateFileName) throws ParsePropertyException, InvalidFormatException { try { String templateFilePath = "template/excel/" + templateFileName; InputStream templateStream = PdfUtil.class.getClassLoader().getResourceAsStream(templateFilePath); InputStream is = new BufferedInputStream(templateStream); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xlsx\""); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); try (OutputStream os = response.getOutputStream()) { Context context = new Context(); context.putVar("data", map); context.putVar("list", list); JxlsHelper.getInstance().processTemplate(is, os, context); } } catch (Exception e) { log.debug(e.getMessage()); } } }