下载生成excel 里面两个输出流冲突求解决


    @Override
    public void mediadown(HttpServletResponse response,ArrayList<media> med,HttpSession session) throws IOException {
        // 1.创建一个workbook,对应一个Excel文件
        HSSFWorkbook wb = new HSSFWorkbook();
        // 2.在workbook中添加一个sheet,对应Excel中的一个sheet
        HSSFSheet sheet = wb.createSheet("媒体信息表");
        // 3.在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
        HSSFRow row = sheet.createRow((int) 0);
        // 4.创建单元格,设置值表头,设置表头居中
        HSSFCellStyle style = wb.createCellStyle();
        // 居中格式
        HSSFCell cell = row.createCell(0);
        cell.setCellValue("id");
        cell.setCellStyle(style);

        cell = row.createCell(1);
        cell.setCellValue("账户id");
        cell.setCellStyle(style);

        cell = row.createCell(2);
        cell.setCellValue("媒体名称");
        cell.setCellStyle(style);

        cell = row.createCell(3);
        cell.setCellValue("广告位id");
        cell.setCellStyle(style);

        cell = row.createCell(4);
        cell.setCellValue("广告位名称");
        cell.setCellStyle(style);

        cell = row.createCell(5);
        cell.setCellValue("操作系统");
        cell.setCellStyle(style);

        cell = row.createCell(6);
        cell.setCellValue("广告位样式");
        cell.setCellStyle(style);

        cell = row.createCell(7);
        cell.setCellValue("尺寸");
        cell.setCellStyle(style);

        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        int i=0;
        for(media hour:med){
            row = sheet.createRow(i + 1);
            row.createCell(0).setCellValue(hour.getId());
            row.createCell(1).setCellValue(hour.getAccountid());
            row.createCell(2).setCellValue(hour.getMedia());
            row.createCell(3).setCellValue(hour.getApid());
            row.createCell(4).setCellValue(hour.getAdname());
            row.createCell(5).setCellValue(hour.getOs());
            row.createCell(6).setCellValue(hour.getApstyle());
            row.createCell(7).setCellValue(hour.getApsizie());
            i++;
        }
        
        FileOutputStream out =new FileOutputStream("E:/test/媒体信息表.xls");
        wb.write(out);
        out.close();

  这里的问题时可以下载 不报错但是名字不会变化,点击下载一次 第2次点击就不好使了不会自动命名 +1等 求解决,最好能探出下载框还不冲突,无语死了
    }

 

 

 

 

 

最后会报这个错误getOutputStream() has already been called for this response

网上的方案我都是了不好使  我这里是后台,前台就一个下载2个字  ,后台里面 这些 方法都没有,网上说的方法 ,求大神帮忙

叮当猫咪
浏览 841回答 21
21回答

翻翻过去那场雪

是导出对吧?

慕标5832272

是的 下载 的时候就有冲突,但是不影响程序 ,不过控制台报错 网上的方法都是了 还是不好时 擦擦擦求解

森栏

@skateweb: 现在下班了.忘记给你demo了

胡子哥哥

@skateweb: 明天给你看看 我做的导出

拉莫斯之舞

@skateweb: 少给了一个类  懒的重新弄一个包了

喵喔喔

out.clear();   out = pageContext.pushBody();  这两句话应该放在哪里啊 ,为啥我的下载类  里面out 没有这两个方法  咋弄啊 求解

HUWWW

@skateweb: 你用记事本打开.cs后缀的文件,然后找到导出的代码  把我上面那个类新建一个帮助类

慕村225694

@skateweb:    我的意思是,你换这种方案看看会不会有这个异常... 这个异常我不知道  

红糖糍粑

@skateweb: 我给你看图片吧  我就几行代码  

繁星点点滴滴

@skateweb: 我觉得很简单啊。。。  你想办法弄一个DataTable  其他的就直接调用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java