EasyExcel下载EXCEL文件,后台通过流形式输出到前端浏览器下载方式输出

前端代码(参考):

$("#import").on('click', function(){
    var createDate=$("#createdDate").val();
    var key1=$("#key1").val();
    if(createDate==null||createDate==""){
        layer.msg("请选择创建时间段!在点击导出数据)");
        return ;
    }
    var load = layer.load();
    //原生ajax
    var xhr = new XMLHttpRequest();
    //post方式请求后台的路径
    xhr.open('post', gatewayServerUrl+'/execute/openApi/importByCreate2', true);
    //导出的Excel是二进制数据类型,所以设置为blob
    xhr.responseType = 'blob';
    //请求头(key,value),请求头可以设置多个key-value对
    xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
    //返回成功,导出的Excel文件
    xhr.onload = function () {
        if (this.status == 200) {
            layer.close(load);
            var blob = this.response;
            var a = document.createElement('a');
            var url = window.URL.createObjectURL(blob);
            a.href = url;
            //设置文件名称
            a.download = '产品完检管理【'+createDate+'】.xlsx';
            a.click();
        }
    }
    //请求的参数,json格式,后台要用json格式接收
    xhr.send(JSON.stringify({
        "createDate" : createDate,
        "key1":key1
    }));

});

后端代码(参考):

List<ManuProductCheckExport> list = new ArrayList<>();
OutputStream out = response.getOutputStream();
//文件名需要这样写,不能在setHeader直接写中文名,否则下载的文件名字为空,只有后缀
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("导出数据产品完检", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
ExcelWriter excelWriter = EasyExcelFactory.write(out).build();
EasyExcel.write(response.getOutputStream(), ManuProductCheckExport.class)
        .sheet("sheet")
        .doWrite(list);
excelWriter.finish();
out.flush();
out.close();

依赖:

<!-- easyexcel导入导出 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.7</version>
</dependency>

相关推荐

  1. 前端下载文件

    2024-01-13 05:58:02       31 阅读
  2. 前端下载导出文件excel/word/pdf/zip等

    2024-01-13 05:58:02       64 阅读
  3. 前端实现文件下载

    2024-01-13 05:58:02       30 阅读
  4. 前端下载文件方法

    2024-01-13 05:58:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 05:58:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 05:58:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 05:58:02       82 阅读
  4. Python语言-面向对象

    2024-01-13 05:58:02       91 阅读

热门阅读

  1. @KafkaListener指定kafka集群

    2024-01-13 05:58:02       51 阅读
  2. HTML5中form表单防止重复提交的两种方法

    2024-01-13 05:58:02       63 阅读
  3. VUE 前端框架学习总结

    2024-01-13 05:58:02       57 阅读
  4. Spring Boot 构建工具插件

    2024-01-13 05:58:02       65 阅读
  5. Web3.0是如何影响未来互联网发展的

    2024-01-13 05:58:02       58 阅读
  6. MAC通过终端,使用python3建立本地Web服务

    2024-01-13 05:58:02       54 阅读
  7. 【算法笔记】贪心专题

    2024-01-13 05:58:02       53 阅读
  8. HTML固定表格宽度

    2024-01-13 05:58:02       51 阅读
  9. vue3中路由守卫的快速上手

    2024-01-13 05:58:02       61 阅读