spring - Rest 使用poi 下载excel ,出现Stream is closed

查看:262
本文介绍了spring - Rest 使用poi 下载excel ,出现Stream is closed的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近使用springmvc4的Rest+Poi进行下载文件 代码如下

 /**
 * 导出用户批量注册模版
 *
 * @param response
 * @return ResponseEntity
 * @author uqing
 */
@PostMapping(path = "/userExportTemplate", produces =MediaType.APPLICATION_OCTET_STREAM_VALUE)
@Timed
public ResponseEntity<String> exportTemplate(HttpServletResponse response) {
    try {
        String fileName = "用户信息模版" + LocalDate.now() + ".xlsx";
        new ExportExcel(null, UserTempleVM.class).write(response, fileName).dispose();
        return new ResponseEntity<String>("成功导出模版", HttpStatus.OK);
    } catch (Exception ex) {
        ex.printStackTrace();
        return new ResponseEntity<String>("导出用户模版失败", HttpStatus.BAD_GATEWAY);
    }
}

发现在页面能打开打开excel,可是出现如下错误,而且文件名是乱码,但是文件能打开,也能使用

如果不使用ResponseEntity,使用void,就不会出现如下错误,有没有大神遇到过,好纠结!能否帮我解释下。

解决方案

用法有问题,既然用了 HttpServletResponse response ,就不能再使用ResponseEntity,前者把IO都关闭了,后者就没有意义的。所以return void 就好了。

这篇关于spring - Rest 使用poi 下载excel ,出现Stream is closed的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆