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();
    
  • 相关阅读:
    前端大牛们都学过哪些东西?
    自适应网页设计
    CSS border实现三角形
    wampServer 设置
    javascript 基础
    Oracle 优化相关
    Java(数据类型)基础面试
    Java 反射机制
    【设计模式】——代理模式
    【设计模式】——单例模式
  • 原文地址:https://www.cnblogs.com/bradcai/p/11344247.html
Copyright © 2011-2022 走看看