Spring boot 使用jxls whit OutputStream引用HttpServletResponse对象时出现问题

Spring boot 使用jxls whit OutputStream引用HttpServletResponse对象时出现问题,spring-boot,jxls,Spring Boot,Jxls,2020-10-27 12:04:54[http-nio-8080-exec-2]INFO org.jxls.template.SimpleExporter[;;3b1c7bd5-5c93-4156-b348-a00647a8c2cf;0]-您可以更改文件中的SPI:META-INF/services/org.jxls.util.ServiceFactory 2020-10-27 12:04:54[http-nio-8080-exec-2]INFO org.jxls.template.Simpl

2020-10-27 12:04:54[http-nio-8080-exec-2]INFO org.jxls.template.SimpleExporter[;;3b1c7bd5-5c93-4156-b348-a00647a8c2cf;0]-您可以更改文件中的SPI:META-INF/services/org.jxls.util.ServiceFactory

2020-10-27 12:04:54[http-nio-8080-exec-2]INFO org.jxls.template.SimpleExporter[;;3b1c7bd5-5c93-4156-b348-a00647a8c2cf;0]-您可以更改文件中的SPI:META-INF/services/org.jxls.util.JxlsConfigProvider

2020-10-27 12:04:54[http-nio-8080-exec-2]INFO org.jxls.util.TransformerFactory[;;3b1c7bd5-5c93-4156-b348-a00647a8c2cf;0]-按类加载变压器org.jxls.transform.poi.PoiTransformer

2020-10-27 12:04:55[http-nio-8080-exec-2]INFO org.jxls.template.SimpleExporter[;;3b1c7bd5-5c93-4156-b348-a00647a8c2cf;0]-您可以更改文件中的SPI:META-INF/services/org.jxls.expression.ExpressionEvaluatorFactory

// Controller
@GetMapping("/get")
    public void getWorkList(HttpServletResponse res) throws IOException {

        //OutputStream outputStream = new FileOutputStream("target/view-dossiers.xlsx");
        ServletOutputStream outputStream = res.getOutputStream();
        res.setContentType("application/vnd.ms-excel");
        res.setHeader("Content-Disposition","attachment; filename=\"target/view-dossiers.xlsx\"");
        res.setHeader("Content-Transfer-Encoding", "binary");
        this.dossierExportService.getDossiersNull(outputStream);
    }

// Service
@Override
    public void getDossiersNull(ServletOutputStream outputStream) throws IOException{
        List<DossierExportData> dataList = new ArrayList<>();
        dataList.add(new DossierExportData("AA", "BB", "XX", 6, LocalDate.now(), "XYZ", 100.00, "DD"));
        dataList.add(new DossierExportData("BB", "BB", "XX", 6, LocalDate.now(), "XYZ", 300.00, "DD"));
        dataList.add(new DossierExportData("CC", "BB", "XX", 6, LocalDate.now(), "XYZ", 400.00, "DD"));
        dataList.add(new DossierExportData("DD", "BB", "XX", 6, LocalDate.now(), "XYZ", 500.00, "DD"));

        buildExcel(outputStream, dataList);
    }

// BuildExcell
private void buildExcel(OutputStream outputStream, List<DossierExportData> exportDataList) throws IOException {
        try(InputStream is = getClass().getResourceAsStream("/templates/gestione-eccedenze.xlsx")) {
            try (OutputStream os = outputStream) {
                Context context = new Context();
                context.putVar("exportList", exportDataList);
                JxlsHelper.getInstance().processTemplate(is, os, context);
            }
        }
    }
//控制器
@GetMapping(“/get”)
public void getWorkList(HttpServletResponse res)引发IOException{
//OutputStream OutputStream=新文件OutputStream(“target/view dossiers.xlsx”);
ServletOutputStream outputStream=res.getOutputStream();
res.setContentType(“application/vnd.ms excel”);
res.setHeader(“内容处置”、“附件;文件名=\”目标/查看档案.xlsx\”);
res.setHeader(“内容传输编码”、“二进制”);
this.dossierExportService.getDossiersNull(outputStream);
}
//服务
@凌驾
public void getDossiersNull(ServletOutputStream outputStream)引发IOException{
List dataList=new ArrayList();
添加(新的DossierExportData(“AA”、“BB”、“XX”、6、LocalDate.now()、“XYZ”、100.00、“DD”);
添加(新的DossierExportData(“BB”,“BB”,“XX”,6,LocalDate.now(),“XYZ”,300.00,“DD”);
添加(新的DossierExportData(“CC”、“BB”、“XX”、6、LocalDate.now()、“XYZ”、400.00、“DD”);
添加(新的DossierExportData(“DD”,“BB”,“XX”,6,LocalDate.now(),“XYZ”,500.00,“DD”);
buildExcel(输出流、数据列表);
}
//建筑卓越
私有void buildExcel(OutputStream OutputStream,List exportDataList)引发IOException{
try(InputStream=getClass().getResourceAsStream(“/templates/gestione eccedenze.xlsx”)){
try(OutputStream os=OutputStream){
上下文=新上下文();
context.putVar(“exportList”,exportDataList);
JxlsHelper.getInstance().processTemplate(is、os、上下文);
}
}
}