spring - Rest 使用poi 下载excel ,出现Stream is closed
本文介绍了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屋!
查看全文