添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
org.springframework.http.converter.HttpMessageNotWritableException:
 No converter for [class com.xxx.dto.Result] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8'

我的问题根因

controller处理逻辑有问题,导致报错,然后被全局异常捕捉,再然后返回了错误信息

也就是说本来没有返回值的方法,最终有返回值class com.xxx.dto.Result ,就会抛出以上错误。

我的解决方案

把controller里面的报错解决,让逻辑正常执行,不报错,不被全局异常捕捉即可

以上为我遇到的问题根因和解决方案

另外还有种情况 也可能会报以上错误,就是表格列的  index的值重复

@ExcelProperty(value = "字段", index = 0)

以下是具体的分析步骤,可看,可略过。

我的代码情况:
1. controller内无返回值,因此不适用通常解决方案

public void downloadExt(HttpServletResponse response, DataQuery qry) throws IOException {
    try {
        // 查询数据 导出数据逻辑
    } catch (Exception e) {
            throw new BsException("文件下载失败");


2. 再细看日志,报错内其他信息

org.springframework.http.converter.HttpMessageNotWritableException:
 No converter for [class com.xxx.dto.Result] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8'


发现虽然接口代码没有返回值,但是 前端请求接口的时候 的确返回了 com.xxx.dto.Result 对象

3. 查看代码是否有全局异常处理

public class ExceptionHandler  implements GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result errorException(Exception e) {
        log.error(e.getMessage(), e);
        return Result.fail(xxxx);


经查看,是全局异常处理捕捉了第1步的controller抛出的异常,然后返回了Result对象,导致下载报错。

但是 根因不在这里,而是在导出的controller代码里面报错了
public void downloadExt(HttpServletResponse response, DataQuery qry) throws IOException {
    try {
        **// 查询数据 导出数据逻辑**
    } catch (Exception e) {
            log.info(null, e);
            throw new BsException("文件下载失败");
    }
}

打出日志,查看日志,即可解决问题

No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel; EasyExcel导出报错
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.util.LinkedHashMap] with preset Content-Type 'text/html;charset=UTF-8']; ServletContext attribute. Are you running in a Servlet container that suppor
意思是:对于预设内容类型为“多部分/表单数据”的[class org.jeecg.common.api.vo.Result]没有转换器 response.setContentType("application/json;charset=utf-8");
已解决:No converter for XXX with preset Content-Typeapplication/vnd.ms-excel;charset=utf-8‘
起因是导出excel文件,发现下载的excel文件无法正常打开,总是提示文件损坏,需要修复,于是在代码中加入了以下代码 //2007版本excel导出 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 文件可以正常打开了,内容也没
情景:从项目中拿到一个客户的demo工程,或者导入一个别人的工程,编译时出现 Error:No such property: GradleVersion for class: JetGradlePlugin: 原因:这是gradle的版本太高导致的 解决办法: 第一步:打开工程的build.gradle,注意不是app/build.gradle 第二步:修改dependencies 第三步:打开工程的gradle/wrapper/gradle-wrapper.properties: 第四步:修改distributionUrl,注意这个版本要和第二步中的版本对应,可参考下面改至相应版本,想
这个错误通常是因为在使用某些库或框架时,尝试将一个Java对象转换为Excel文件时出现的。 你可以尝试使用专门的Java库,如Apache POI或jExcelApi来处理Excel文件。这些库可以让你更容易地创建、读取和修改Excel文件,同时也提供了更多的配置选项。 如果你已经在使用这些库或框架,并且仍然遇到此错误,那么可能需要检查你的代码是否正确地使用了这些库,并且是否正确地设置了Content-Type。你可以检查文档或者寻求相关的帮助来解决此问题。
No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel; 14803 No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel; m0_61089588: 注意controller层的响应结果,导出Excel是无返回值的 No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel; 大家也参考下 No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel; converter属性报错 或者里面映射的字段类型不对也会有这个报错 Expiring 1 record(s) for 2:xxx ms has passed since batch问题研究 杨小胖要减肥: 大佬,磁盘空间不足这个原因的资料能否提供学习一下 No converter for [class java.util.LinkedHashMap] with preset Content-Type ‘application/vnd.ms-excel; org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class com.xxx.dto.Result] with preset Content-Type 'application/vnd.ms-excel;charset=utf-8' 我的问题根因: 根本原因是controller处理逻辑有问题,导致报错,然后被全局异常捕捉,再然后返回了错误信息 错误信息对象是class com.xxx.dto.Result