zoukankan      html  css  js  c++  java
  • XSSFWorkbook对象 进行zip打包时 用write资源流自动关闭处理办法

    XSSFWorkbook对象的write方法内会将传入的资源流自动关闭 导致下载excel失败

    错误代码

        OutputStream out = response.getOutputStream(); 
        ZipOutputStream zos = new ZipOutputStream(out);
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 将文件写入zip内,即将文件进行打包
        zos.putNextEntry(new ZipEntry(fileName + "(" + UUID.randomUUID() + ")." + typeName));
    
        // 此处将自动关闭zos资源
        workbook.wirte(zos);
    
    

    解决方法: 将XSSFWorkbook转换成ByteArrayOutputStream,用ByteArrayOutputStream对象将流写入zip对象中

        OutputStream out = response.getOutputStream(); 
        ZipOutputStream zos = new ZipOutputStream(out);
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 将文件写入zip内,即将文件进行打包
        zos.putNextEntry(new ZipEntry(fileName + "(" + UUID.randomUUID() + ")." + typeName));
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        workbook.write(bos);
        bos.writeTo(zos);
        zos.closeEntry();
    
        // 当所有文件打包完成后关闭zos资源
        zos.close();
    
  • 相关阅读:
    bootstrap轮播组件之“如何关闭自动轮播”
    js分享功能
    设置省略号的取巧方法
    bootstrap-table表格插件的使用案例
    如果有帮到您,欢迎打赏
    IDEA导入Eclipse项目
    Centos nginx安装
    centos tomcat安装
    centos安装jdk
    Centos创建用户
  • 原文地址:https://www.cnblogs.com/bradcai/p/11344247.html
Copyright © 2011-2022 走看看