解决方案 »

  1.   

    在response 中设置头报文件的属性,excel:
    response.setContentType("application/vnd.ms-excel");        //改成输出excel文件
    response.setHeader("Content-disposition","attachment; filename=" + 文件名 );
      

  2.   

    我可以先给你个思路 代码年代久远不好找了
    点击导出按钮之后你可以先ajax请求后台写好文件,然后再实现文件的下载就OK了。这样是可以弹窗提示选择下载路径的
    写文件楼主应该是会了,下载功能建议楼主百度,一堆资料、代码,一个Servlet就能搞定。
      

  3.   

    你说的是调用下载框,然后把路径返回给后台?
    我再说直白一些吧  Servlet不是有out.print()吗,输出文件流的话就是文件传输了,在页面上会自动弹出下载提示窗口,然后浏览器会帮你把文件存到你想要的位置。你需要做的就是写好文件然后做一个输出文件的Servlet
      

  4.   

    刚写了jxl测试, lz 可以瞄瞄
      

  5.   

    new FileOutputStream()不太明白代码为什么写成这样?直接输出文件到服务器端吗?
    你这是B/S程序,还是C/S程序?
    如果是B/S程序,可以参考1楼的
    如果是C/S程序,楼上的暂时没有正解,可以参考楼下的
      

  6.   

    都试过,都没作用。  我的是直接生成的Excel,不是从服务器上下载,是要生成的时候弹出下载框。
      

  7.   

    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,我写的一个简单的东西
      

  8.   

    这个导出成功了也是一样的,直接就下载了
    /**
     * 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(); 
    }