64 lines
1.9 KiB
Java
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());
|
|
}
|
|
}
|
|
}
|