求教,导出生成Excel 是弹出下载框。

aliuges 2013-07-16 09:20:10

FileOutputStream fileOut = new FileOutputStream("C:/Users/Administrator/Desktop/测试ONG.xls");
wb.write(fileOut);
fileOut.close();

我现在是直接把文件生成在桌面上的, 我想要先弹出下载框,然后自己选择保存路径,请问怎么弄,请各位教教小弟,能有代码最好了,谢谢。
...全文
667 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
my200575974 2014-11-24
  • 打赏
  • 举报
回复
我也找这个呢
wrong1111 2013-07-21
  • 打赏
  • 举报
回复
看上面说的,都差不多了。。
secondfirstlife 2013-07-20
  • 打赏
  • 举报
回复
这个导出成功了也是一样的,直接就下载了 /** * wangjiafeng * TODO 导出自行车电动车信息Excel * @method educeExcel * @return * @throws Exception * 2013 上午10:20:25 */ public String educeEleCarExcel() throws Exception{ Member member=getMember(); if(member != null ){ Date date=new Date(System.currentTimeMillis()); String test=DateUtil.parseDateToString(date, "yyyy-MM-ddHH:mm:ss").replace("-", "").replace(":", "").trim(); String path = request.getSession().getServletContext().getRealPath("/") + "ElectCarExcel"+test+".xls"; List<ElectCarInfor> list=electCarInforService.queryByAdminAndFrontList(DecoderUtil.UtfDecoder(carriageId), DecoderUtil.UtfDecoder(electCarId), DecoderUtil.UtfDecoder(brand), DecoderUtil.UtfDecoder(model), DecoderUtil.UtfDecoder(name), DecoderUtil.UtfDecoder(personid), DecoderUtil.UtfDecoder(phoneNum1),robTime,DecoderUtil.UtfDecoder(robPlace), DecoderUtil.UtfDecoder(regUnit),regDate, flag, null, null); if(list != null && list.size() > 0){ ExcelUtil excelUtil=new ExcelUtil(); excelUtil.createExcel(path, list); excelUtil.downLoadExcel(response, path); FileUtil.deleteFile(path); } return null; }else{ return "memberLogin"; } public void downLoadExcel(HttpServletResponse response,String filePath ) throws IOException { File f = new File(filePath); BufferedInputStream br = new BufferedInputStream(new FileInputStream(f)); byte[] buf = new byte[1024]; int len = 0; response.reset(); // 非常重要 response.setContentType("application/xls;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + f.getName()); OutputStream out = response.getOutputStream(); while ((len = br.read(buf)) > 0) out.write(buf, 0, len); br.close(); out.flush(); out.close(); }
secondfirstlife 2013-07-20
  • 打赏
  • 举报
回复
public InputStream getInputStream() throws Exception { Annex annex=annexService.find(Annex.class, id); File file = new File(getFileBasePath() + annex.getUrl()); File file2=new File(getFileBasePath() + File.separator+"download"+File.separator+DecoderUtil.UtfDecoder(annex.getName())); file2.getParentFile().mkdir(); FileUtil.copyFile(file, file2); try { this.setFileName(new String(file2.getName().getBytes(), "ISO8859-1")); tempStream = new java.io.FileInputStream(file2);//从系统磁盘文件读取数据 bytes = new byte[tempStream.available()]; if(tempStream != null) { tempStream.read(bytes); } tempStream.close(); return new ByteArrayInputStream(bytes); } catch(Exception e) { return null; }finally{ FileUtil.deleteFile(file2.toString()); } } 这个是下载的action,我写的一个简单的东西
aliuges 2013-07-19
  • 打赏
  • 举报
回复
用了最笨的方法,把文件写到服务器,然后下载,然后把服务器的文件删除了...
aliuges 2013-07-19
  • 打赏
  • 举报
回复
引用 14 楼 forgetsam 的回复:
[quote=引用 13 楼 lgk56 的回复:] 都试过,都没作用。 我的是直接生成的Excel,不是从服务器上下载,是要生成的时候弹出下载框。
你先把脑子里的水排干净,然后解释清楚你的“弹出下载框”是浏览器的“下载框”还是你应用程序界面上自己做出来的“下载框”[/quote] 吃饱了撑的自己做下载框?
forgetsam 2013-07-18
  • 打赏
  • 举报
回复
引用 13 楼 lgk56 的回复:
都试过,都没作用。 我的是直接生成的Excel,不是从服务器上下载,是要生成的时候弹出下载框。
你先把脑子里的水排干净,然后解释清楚你的“弹出下载框”是浏览器的“下载框”还是你应用程序界面上自己做出来的“下载框”
aliuges 2013-07-18
  • 打赏
  • 举报
回复
都试过,都没作用。 我的是直接生成的Excel,不是从服务器上下载,是要生成的时候弹出下载框。
aliuges 2013-07-18
  • 打赏
  • 举报
回复
引用 10 楼 mycdsnstudy 的回复:
new FileOutputStream()不太明白代码为什么写成这样?直接输出文件到服务器端吗? 你这是B/S程序,还是C/S程序? 如果是B/S程序,可以参考1楼的 如果是C/S程序,楼上的暂时没有正解,可以参考楼下的
这是直接输出到我本机指定的路径。
超级菜鸟 2013-07-17
  • 打赏
  • 举报
回复
引用 1 楼 Vanrare 的回复:
在response 中设置头报文件的属性,excel: response.setContentType("application/vnd.ms-excel"); //改成输出excel文件 response.setHeader("Content-disposition","attachment; filename=" + 文件名 );
+1
小龙在线 2013-07-17
  • 打赏
  • 举报
回复
new FileOutputStream()不太明白代码为什么写成这样?直接输出文件到服务器端吗? 你这是B/S程序,还是C/S程序? 如果是B/S程序,可以参考1楼的 如果是C/S程序,楼上的暂时没有正解,可以参考楼下的
小小二子 2013-07-17
  • 打赏
  • 举报
回复
百度:如何修改浏览器默认下载方式?
huzhihui429 2013-07-16
  • 打赏
  • 举报
回复
这个是浏览器决定的。 不然lz可以自己做过弹出框把路径传到后台
huzhihui429 2013-07-16
  • 打赏
  • 举报
回复
ie是弹出,谷歌是自动下载
莫_莫 2013-07-16
  • 打赏
  • 举报
回复
刚写了jxl测试, lz 可以瞄瞄
a597926661 2013-07-16
  • 打赏
  • 举报
回复
引用 4 楼 lgk56 的回复:
[quote=引用 2 楼 a597926661 的回复:] 我可以先给你个思路 代码年代久远不好找了 点击导出按钮之后你可以先ajax请求后台写好文件,然后再实现文件的下载就OK了。这样是可以弹窗提示选择下载路径的 写文件楼主应该是会了,下载功能建议楼主百度,一堆资料、代码,一个Servlet就能搞定。
你说的是调用下载框,然后把路径返回给后台?[/quote] 我再说直白一些吧 Servlet不是有out.print()吗,输出文件流的话就是文件传输了,在页面上会自动弹出下载提示窗口,然后浏览器会帮你把文件存到你想要的位置。你需要做的就是写好文件然后做一个输出文件的Servlet
aliuges 2013-07-16
  • 打赏
  • 举报
回复
引用 2 楼 a597926661 的回复:
我可以先给你个思路 代码年代久远不好找了 点击导出按钮之后你可以先ajax请求后台写好文件,然后再实现文件的下载就OK了。这样是可以弹窗提示选择下载路径的 写文件楼主应该是会了,下载功能建议楼主百度,一堆资料、代码,一个Servlet就能搞定。
你说的是调用下载框,然后把路径返回给后台?
爱T 2013-07-16
  • 打赏
  • 举报
回复
这不是思路的问题,1楼写的就行,试试,如果不行再说,先mark一下
a597926661 2013-07-16
  • 打赏
  • 举报
回复
我可以先给你个思路 代码年代久远不好找了 点击导出按钮之后你可以先ajax请求后台写好文件,然后再实现文件的下载就OK了。这样是可以弹窗提示选择下载路径的 写文件楼主应该是会了,下载功能建议楼主百度,一堆资料、代码,一个Servlet就能搞定。
莫_莫 2013-07-16
  • 打赏
  • 举报
回复
在response 中设置头报文件的属性,excel: response.setContentType("application/vnd.ms-excel"); //改成输出excel文件 response.setHeader("Content-disposition","attachment; filename=" + 文件名 );

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧