现在要实现下载excel功能,但excel不是存放在硬盘的,而是服务器Java生成的workbook。试标签的href,但是href只能输入文件路径。
现在我需要的是:前端点击一下,然后到达服务器的 excelExport.do方法里面,方法里生成workbook,在传送excel到前端,前端弹出下载对话框,然后下载。 我已经会生成excel,只是不知道怎么传送给前端。急!
你这个问题有很多解决办法,第一个:没必要弹出下载提示,点击后生成excel直接输出,实现下载,以下是参考代码
response.setContentType("application/msexcel;");
response.setHeader("Content-Disposition", new String(("attachment;filename="+"error.xls").getBytes("GB2312"), "UTF-8"));
File f = new File("d:/20121211165820140_err.xls");
//File f = new File(targetFolder.getPath()+File.separator+fName);
FileInputStream in = new FileInputStream(f);
byte b[] = new byte[1024];
int i = 0;
ServletOutputStream out = response.getOutputStream();
while((i=in.read(b))!= -1){
out.write(b, 0, i);
}
out.flush();
out.close();
in.close();
第二种:保留下载提示,生成excel后把它保存到服务器然后再把地址传给前台,不推荐这种方法,就像脱裤子放屁一样
File path=new File(Util.DOWNLOAD+"导出Excel");//创建文件夹
if(!path.exists()) {
path.mkdirs();//不存在该路径则自动生成 }
String path1 = Util.DOWNLOAD+"/导出Excel"+File.separator+filename+".xls";
FileOutputStream fileout = new FileOutputStream(path1);
wb.write(fileout);
fileout.flush();
fileout.close();
return name+".xls"
HTML中:
window.location.href = path;//path就是返回的name+".xls"
java生成的为什么没有url?就是你jsp获得请求并且返回文件的那个http资源作为你的url
需要使用a标签,传递也就是下载的过程,把你生成的excel转化成流,写到response中。
java生成的,后台的话一般是servlet或者是action,你直接把访问他们就可以啊,访问他们,同样是在完成文件传送,都是流在处理数据,一样的。
1.以前你访问的直接是文件在服务器中的资源链接,访问的时候,浏览器会将文件从文件流中读取下来,保存到本地
2.现在用java写,你后台访问要么是servlet要么是action,直接访问他们,他们也是在返回相应的数据给你,处理都是一样的。
服务器使用respons输出
http://blog.csdn.net/je_ge/article/details/53414092
重点是我前端不知道怎么写,谁能告诉我前端怎么写,《a》href不能直接写方法的url.
你后端用的是什么框架,springmvc吗?a标签herf能访问方法的 href="<%=basePath%>/这里还要补全/excelExport.do"
下面的代码放在html里面,目的是自动获取地址,开发时等于"localhost:8080"
<%
String basePath = request.getContextPath();
%>