/**
* 导出数据
* 需配合easyExcel使用
*
* @param response 响应
* @param list 列表 需配合easyExcel相关注解
* @param classType 类类型 需配合easyExcel相关注解
* @param name 名字
* @param suffix 后缀
* @return {@link HttpServletResponse}
* @throws IOException ioexception
*/
public static <T> HttpServletResponse exportData(HttpServletResponse response, List<T> list, Class<T> classType, String name, String suffix) throws IOException {
try {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String fileName = URLEncoder.encode(name, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + suffix);
// 这里需要设置不关闭流
EasyExcel.write(response.getOutputStream(), classType).autoCloseStream(Boolean.FALSE).sheet(name)
.doWrite(list);
return response;
} catch (Exception e) {
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
Map<String, String> map = MapUtils.newHashMap();
map.put("status", "failure");
map.put("message", "下载文件失败" + e.getMessage());
response.getWriter().println(JSON.toJSONString(map));
return response;
}
}
将这个方法封装到自己的Utils类里,然后根据方法传参就行!
如有错误请指出!谢谢