2 justinliuliwen justinliuliwen 于 2017.01.07 01:00 提问

7个回答

welan123123
welan123123   2017.01.07 08:55
已采纳

你这个问题有很多解决办法,第一个:没必要弹出下载提示,点击后生成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"
welan123123
welan123123 回复justinliuliwen: 你这种想法就有点逗了,代码还是要自己写的,其他人又没有你的项目源码,怎么可能给出具体的
11 个月之前 回复
justinliuliwen
justinliuliwen 好吧,可行,其实百度都有,只是不想动手,来这悬赏让别人给具体的!惭愧,你可以试一试,要是把方法里的代码给我打桩输出前端会显示找不到。
11 个月之前 回复
justinliuliwen
justinliuliwen 回复奔跑的小鱼儿: 我用<a> href="excelExport.do"不能直接访问404,href里面只能写资源文件地址
11 个月之前 回复
justinliuliwen
justinliuliwen 回复奔跑的小鱼儿: 能把前端代码发下不
11 个月之前 回复
welan123123
welan123123 回复justinliuliwen: 你确定你后台代码都懂了吗,第一种你修改excelExport.do方法,前端就直接调用excelExport.do方法后就开始下载了
11 个月之前 回复
justinliuliwen
justinliuliwen 我后台代码都懂,不知道的是前端怎么写,对前端不熟,你说下第一种的前端怎么写,测试了通过,就采纳你了
11 个月之前 回复
caozhy
caozhy   Ds   Rxr 2017.01.07 01:58

java生成的为什么没有url?就是你jsp获得请求并且返回文件的那个http资源作为你的url

sun1021873926
sun1021873926   Ds   Rxr 2017.01.07 05:49

需要使用a标签,传递也就是下载的过程,把你生成的excel转化成流,写到response中。

zjn640322
zjn640322   2017.01.07 08:16

java生成的,后台的话一般是servlet或者是action,你直接把访问他们就可以啊,访问他们,同样是在完成文件传送,都是流在处理数据,一样的。
1.以前你访问的直接是文件在服务器中的资源链接,访问的时候,浏览器会将文件从文件流中读取下来,保存到本地
2.现在用java写,你后台访问要么是servlet要么是action,直接访问他们,他们也是在返回相应的数据给你,处理都是一样的。

JE_GE
JE_GE   2017.01.07 09:57
justinliuliwen
justinliuliwen   2017.01.07 10:10

重点是我前端不知道怎么写,谁能告诉我前端怎么写,《a》href不能直接写方法的url.

welan123123
welan123123   2017.01.07 11:15

你后端用的是什么框架,springmvc吗?a标签herf能访问方法的 href="<%=basePath%>/这里还要补全/excelExport.do"
下面的代码放在html里面,目的是自动获取地址,开发时等于"localhost:8080"
<%
String basePath = request.getContextPath();
%>

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!