解决No converter for XXX with preset Content-Type ‘application/octet-stream;charset=UTF-8‘

编程知识 更新时间:2023-04-05 06:03:49

如题

我在后台封装下载excel的接口逻辑时,文件流关闭后响应返回success,但是后台报错

原因就是我系统整体封装的响应逻辑,所以我在下载文件后也返回了成功和失败的逻辑。但是并不支持。

try {

 List<ExportExcelData> excelDataList = getData(wo_id);  // 获取表体数据
 WriteCellStyle headWriteCellStyle = new WriteCellStyle();
 //设置头居中
 headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
//内容策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
//设置 水平居中
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode(work_order+"报表导出测试", "UTF-8").replaceAll("\\+", "%20");
//            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
response.addHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
response.addHeader("Access-Control-Expose-Headers", "Content-disposition");
// 合并策略
Map<String, List<RowRangeDto>> srategyMap = ExcelUtil.addMergeStrategy(excelDataList);
 // 这里需要设置不关闭流;
EasyExcel.write(response.getOutputStream(), ExportExcelData.class).autoCloseStream(Boolean.FALSE)
                    // 注册合并策略
                    .registerWriteHandler(new BizMergeStrategy(srategyMap))
                    .registerWriteHandler(ExcelUtil.CellStyleStrategy())
                    .sheet("ckd出货信息表")
                    .doWrite(excelDataList);
 return "文件下载成功";    // 改为void,不反回               
} catch (Exception e) {
            // 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
logger.error(e.getMessage());
 e.printStackTrace();
 return "文件下载失败";   // 改为void,不反回
        }

一个解决办法是并不返回提示,或者返回null即可避免此类报错。

但是很遗憾,如果我非要想返回 成功或失败提示,目前还没有办法。

更多推荐

解决No converter for XXX with preset Content-Type ‘application/octet-stream;charse

本文发布于:2023-04-05 06:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/355ac4fc8733a6da44b849b1cfbcea92.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Content   Type   preset   converter   XXX

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45165文章数
  • 14阅读数
  • 0评论数