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

2024-02-29 1882阅读

温馨提示:这篇文章已超过394天没有更新,请注意相关的内容是否还可用!

前端代码(参考):
$("#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
    }));
});

后端代码(参考):

EasyExcel下载EXCEL文件,后台通过流形式输出到前端浏览器下载方式输出
(图片来源网络,侵删)
List 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();

依赖:


    com.alibaba
    easyexcel
    2.2.7
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]