u014090687
淬心石
采纳率0%
2015-03-17 07:49 浏览 16.1k

java使用poi实现excel导出之后如何弹出保存提示框

无论使用poi还是使用jxl导出excel都需要用到流

一种是outputstrean,另一种fileoutputstream

第一种:如果想要弹出保存的提示框必须加入下列三句
response.setContentType("application/vnd.ms-excel; charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename="+filename);
response.setCharacterEncoding("utf-8");
OutputStream os=response.getOutputStream();
在使用第一种的时候,我用的ajax请求。导致excel无法导出,最后我直接请求可以导出
原因是:ajax也用到了response.getWriter()方法 要将 数据结果回传,这里 我虽然 放弃了 回传的写入流writer 参数, 但是ajax还是会默认的去掉用,把流已经占用了,当然返回不了任何东西了。
第二种:
action中使用
FileOutputStream fos=new FileOutputStream(file);
此时可以使用ajax请求,在导出成功后返回文件路径,在页面中使用window.open(path);即可打开导出的excel文件

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答 默认 最新

  • HallWong Java开发二逼浩 2015-03-19 07:28

    保存提示框是看浏览器的节操,跟你的Java代码没有关系

    点赞 3 评论 复制链接分享
  • yixianlong1990 yixianlong1990 2015-03-23 08:37
    我js用的:    $("#export_button").click(function(){
          var dss=$["sender2.textds"]();
          dss.url=basepath+'/DeviceFaultAction!deviceFaultList_export.action';
          dss.data=$('#searchform').serialize();
          dss.load();
    
            为什么也不能弹出下载框啊
    
    点赞 评论 复制链接分享
  • u014090687 淬心石 2015-05-14 09:09

    我今天才发现这是在我配置文件少写了一个/之后,才这样写的,其实跟java真的是没有什么关系

    点赞 评论 复制链接分享
  • Fishel_ren __飞翔 2016-01-18 06:07

    你好,我也遇到了你上面说的第一种OutputStream和ajax流的冲突问题,能不能具体地说一下怎么解决呢?

    点赞 评论 复制链接分享
  • zi_wu_xian zi_wu_xian 2016-09-02 06:40

    不是用js的alert弹出一个提示就可以了吗?也可以用PageOffice在客户端导出excel,这样的话用js弹出alert对话框更自然。

    点赞 评论 复制链接分享

相关推荐