查了一下,用这句话的确可以将jsp下载为excel:<% response.setHeader("Content-disposition","attachment; filename=test1.xls");  %>但现在有个问题,在jsp的body的onload事件里面,用js动态写入了数据,但是在下载的excel中,就没有数据,我估计是页面加载前就直接将jsp由后台写入到前台,然后下载了,没有等js动态写入就下载了。怎么解决,公司的框架来着,自己如果写后台,多很多代码,而且部署很麻烦,最简单的方式就是放在js里面生成
 跪求!!谁解决100分送上

解决方案 »

  1.   

    那就把它写在onload()后面执行呗~ajax貌似可以~
      

  2.   


       public String download() throws Exception {
          try {
             String filePath = servletRequest.getParameter("filePath");
             File file = new File(filePath);
             String fileName = file.getName().replaceAll("\\[.+\\]", "");
             fileName = URLEncoder.encode(fileName, "utf-8");
             fileName = fileName.replace('+', ' ');
             servletResponse.setContentType("application/x-download");
             servletResponse.addHeader("Content-Disposition",
                   "attachment;filename=" + fileName);         excelStream = new FileInputStream(file);
          }
          catch(Exception e) {
             write(Tool.getErrorMsg(e.getMessage()));         return ERROR;
          }      return SUCCESS;
       }楼主参考下,从你的代码来看,只是给浏览器了个文件名,根本没有对应的文件流。
    js动态写入数据是怎么回事?
      

  3.   

    所有数据必须用jsp写流、
    如果你返回的是excel就不能用js代码了、
    excel中没有js、
    所以你的也就没有数据了