Map map = JsonParser.json2Map(xmlData);
            URL url = URLUtil.getWebFileUrl(ConfigureParser.getInstance()
                    .getAttribute("filePath"));
            String reportPath = url.getPath() + "/";
            String reportName =null;
            String sheetName = null;
            File f = new File(reportPath, "excel");
            if (!f.exists() && !f.isDirectory()) {//判断路径目录是否存在,判断是不是目录文件
                f.mkdir();//不存在的话就创建file路径的目录
            }
            Calendar c = Calendar.getInstance();
            c.add(c.SECOND,0);
            String timeName = ""+c.get(c.YEAR)+(c.get(c.MONTH)+1)+c.get(c.DATE)
                              +c.get(c.HOUR_OF_DAY)+c.get(c.MINUTE)+c.get(c.SECOND);
            
                reportName= "AnimalTongJi" + timeName + ".csv";
                sheetName = "母猪状态统计";
            String reportDir = reportPath + "excel/" + reportName;
            reportDir=reportDir.replaceAll("%20", " ");            // 判断文件是否存在
            File file = new File(reportDir);
            if(file.exists())file.delete();//存在则删除
            
            String displayName = null;
            try {
                displayName = URLEncoder.encode(reportName, "UTF-8");
            } catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            }
//            HttpServletResponse response;
//            response.setHeader("Content-disposition","inline;filename="+templateName);
            HttpServletResponse response = ServletActionContext.getResponse();
            response.reset();
            response.setHeader("Cache-Control", "Public");
            response.setContentType("application/msexcel");
//            response.setContentType("application/ms-excel");
//            response.setContentType("application/unknow");
//            response.setHeader("Cache-Control", "Public");
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-disposition","inline;filename="+displayName);
            List list = stasticsService.getNDExcelBasic(xmlData);
            Object[] map1 =null;
            map1 = (Object[]) list.get(0);
            int size = map1.length;
            String result = "";
    
            try {
                 FileOutputStream fos = new FileOutputStream(file,true);
                 OutputStreamWriter osw = new OutputStreamWriter(fos);
                 BufferedWriter bw = new BufferedWriter(osw);
                 for (int i = 0; i < list.size(); i++) {
                        map1=(Object[]) list.get(i);
                        for (int j = 0; j < map1.length; j++) {
                            if(map1[j]!=null){
                                result +=map1[j];
                            }
                            result +=",";
                        }
                        result += "\r\n";
                        if(i%2000==0){
                            bw.write(result);
                            result ="";
                        }
                    }
                 
                 bw.write(result);
                 bw.newLine();
                 bw.flush();
                 bw.close();
                 osw.close();
                 fos.close();
                }                catch (FileNotFoundException e1) {
                 e1.printStackTrace();
                } catch (IOException e2) {
                 e2.printStackTrace();
                }
                this.print("{'name':" + timeName + "}");
                return XML;

解决方案 »

  1.   

    //response.setHeader("Content-disposition","inline;filename="+displayName);
    此行代码已经改为
    response.setHeader("Content-Disposition","attachment;filename="+displayName);
    有没有专家指导下。
    百度上能找到的答案基本都试过求专家级别指导啊。
      

  2.   

    欢迎想了解java下载问题的同志前来顶帖。。
    不顶就又沉了。
      

  3.   

    response.reset();
    response.setContentType("application/octet-stream;charset=GBK");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(displayName.getBytes("GBK"), "ISO-8859-1") + "\"");
    attachment是下载,inline是在线打开
      

  4.   

    你改成
    response.setHeader("Content-Disposition","attachment;filename="+displayName);这样还不对,我不信。
    重新发布了吗??下面这样写,试试看。 其实我觉得不改也没关系。response.setContentType("application/vnd.ms-excel");
    还有你怎么没有往
    response.getOutputStream()里写东西呀
      

  5.   

    response.setContentType("text/csv;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + file);我就这两行就可以下载了
      

  6.   

    <mime-mapping>
      <extension>csv</extension>
      <mime-type>application/oct-stream</mime-type>
     </mime-mapping>终于找出问题了。Tomcat/conf/web.xml 文件中缺少了以上代码。发出来这个答案,希望对看到的人有用。谢谢上面回答的人。。