为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2018-12-06 14:01:15
    @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个字  ,后台里面 这些 方法都没有,网上说的方法 ,求大神帮忙
查看完整描述

21 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

是导出对吧?

查看完整回答
反对 回复 2018-12-16
?
慕标5832272

TA贡献1966条经验 获得超4个赞

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

查看完整回答
反对 回复 2018-12-16
?
森栏

TA贡献1810条经验 获得超5个赞

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

查看完整回答
反对 回复 2018-12-16
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

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

查看完整回答
反对 回复 2018-12-16
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

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

查看完整回答
反对 回复 2018-12-16
?
喵喔喔

TA贡献1735条经验 获得超5个赞

  1. out.clear();  
  2. out = pageContext.pushBody(); 
  3. 这两句话应该放在哪里啊 ,为啥我的下载类  里面out 没有这两个方法  咋弄啊 求解
查看完整回答
反对 回复 2018-12-16
?
HUWWW

TA贡献1874条经验 获得超12个赞

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

查看完整回答
反对 回复 2018-12-16
?
慕村225694

TA贡献1880条经验 获得超4个赞

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

查看完整回答
反对 回复 2018-12-16
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

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

查看完整回答
反对 回复 2018-12-16
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

@skateweb: 我觉得很简单啊。。。  你想办法弄一个DataTable  其他的就直接调用

查看完整回答
反对 回复 2018-12-16
  • 21 回答
  • 0 关注
  • 840 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信