2024-11-15 10:27:40 +09:00

64 lines
1.9 KiB
Java

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<String, Object> map,
List<Map<String, Object>> 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());
}
}
}