先上效果图:

先说个问题尽量避免使用Jquery ajax下载excl ,ajax暂不支持返回类型 "流 " 类型,支持json,html,text,xml 类型;可以使用location.href 等,如果非要使用ajax可以请求成功之后我们通过创建一个 <a> 标签然后添加 href属性,最后触发该属性就OK了
有很多写下载excl模板的帖子,很少有人注意小细节: 别忘了导入poi ,io jar包
js代码就不看了:小编使用的location.hre 方式
看看Controller 后台代码吧:
public void downLoadExclOut(HttpServletRequest request,HttpServletResponse response,String url)throws Exception{
try{
if(url!=null){
//校验文件是不是.xlsx 结尾的
if(url.endsWith(".xlsx")){
//获取要下载的模板名称
String fileName = url;
// 设置输出的格式
response.reset();
// 设置要下载的文件的名称
response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));
// 通知客服文件的MIME类型
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
//获取文件的路径
String excelPath = request.getSession().getServletContext().getRealPath("/excl/"+fileName);
//创建输入流对象,读取指定的文件
FileInputStream input = new FileInputStream(excelPath);
//创建文件输出流对象
OutputStream out=response.getOutputStream();
byte[] b = new byte[2048];
int len;
while ((len = input.read(b)) != -1) {
out.write(b, 0, len);
};
input.close();
}
}
}catch (Exception e){
e.printStackTrace();
}
}
这个就是控制层的代码 ,如果你对流有点理解及很容易看懂;
本文介绍了一种使用Java实现的Excel模板下载方法,避免使用Jqueryajax,详细展示了如何通过控制层代码设置响应头和MIME类型,以及如何读取和输出文件流,实现Excel模板的下载。
2678

被折叠的 条评论
为什么被折叠?



