alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.09k stars 7.5k forks source link

Can not close IO.NoSuchMethodError: org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.putArchiveEntry #3954

Closed lolkt closed 1 month ago

lolkt commented 1 month ago

建议先去看文档

快速开始常见问题

异常代码

      List<SignExportVo> records = pages.getRecords();
        File fileStyleTemplate = new File("D:\\不加密\\SignatureManagemenExportTemplate1.xlsx");
        String fileName = "签署数据导出_" + DateUtil.time();
        String sheetName = "签署数据表";
        Class<SignExportVo> signExportVoClass = SignExportVo.class;
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding(Charsets.UTF_8.name());
            fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

            EasyExcel.write(response.getOutputStream(), signExportVoClass).withTemplate(fileStyleTemplate).sheet(sheetName).doWrite(records);

异常提示

om.alibaba.excel.exception.ExcelGenerateException: Can not close IO. at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:420) at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:99) at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:143) at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:63)


Caused by: java.lang.NoSuchMethodError: org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.putArchiveEntry(Lorg/apache/commons/compress/archivers/zip/ZipArchiveEntry;)V at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.saveImpl(ZipContentTypeManager.java:65) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.save(ContentTypeManager.java:450) at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:608) at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1532) at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:227) at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:945)

问题描述

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>4.0.2</version>
        <exclusions>
            <exclusion>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.5</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.16.1</version>
    </dependency>
lolkt commented 1 month ago

image

psxjoy commented 1 month ago

Still jar veison error.I suggest using easyexcel's jar only and try it again.

获取 Outlook for iOShttps://aka.ms/o0ukef


发件人: lolkt @.> 发送时间: Monday, August 26, 2024 5:54:33 PM 收件人: alibaba/easyexcel @.> 抄送: Subscribed @.***> 主题: [alibaba/easyexcel] Can not close IO.NoSuchMethodError: org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.putArchiveEntry (Issue #3954)

建议先去看文档

快速开始https://easyexcel.opensource.alibaba.com/docs/current/ 、常见问题https://easyexcel.opensource.alibaba.com/qa/

异常代码

  List<SignExportVo> records = pages.getRecords();
    File fileStyleTemplate = new File("D:\\不加密\\SignatureManagemenExportTemplate1.xlsx");
    String fileName = "签署数据导出_" + DateUtil.time();
    String sheetName = "签署数据表";
    Class<SignExportVo> signExportVoClass = SignExportVo.class;
    try {
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding(Charsets.UTF_8.name());
        fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

        EasyExcel.write(response.getOutputStream(), signExportVoClass).withTemplate(fileStyleTemplate).sheet(sheetName).doWrite(records);

异常提示

om.alibaba.excel.exception.ExcelGenerateException: Can not close IO. at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:420) at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:99) at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:143) at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:63)


Caused by: java.lang.NoSuchMethodError: org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.putArchiveEntry(Lorg/apache/commons/compress/archivers/zip/ZipArchiveEntry;)V at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.saveImpl(ZipContentTypeManager.java:65) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.save(ContentTypeManager.java:450) at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:608) at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1532) at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:227) at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:945)

问题描述

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>4.0.2</version>
    <exclusions>
        <exclusion>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.5</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.16.1</version>
</dependency>

― Reply to this email directly, view it on GitHubhttps://github.com/alibaba/easyexcel/issues/3954, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACRXFDSI4LS7NORCEOYJMSLZTL3NTAVCNFSM6AAAAABNDVOAUKVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ4DMNBVGA2DGNY. You are receiving this because you are subscribed to this thread.Message ID: @.***>

lolkt commented 1 month ago

Still jar veison error.I suggest using easyexcel's jar only and try it again. 获取 Outlook for iOShttps://aka.ms/o0ukef ____ 发件人: lolkt @.> 发送时间: Monday, August 26, 2024 5:54:33 PM 收件人: alibaba/easyexcel @.> 抄送: Subscribed @.> 主题: [alibaba/easyexcel] Can not close IO.NoSuchMethodError: org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.putArchiveEntry (Issue #3954) 建议先去看文档 快速开始https://easyexcel.opensource.alibaba.com/docs/current/ 、常见问题https://easyexcel.opensource.alibaba.com/qa/ 异常代码 List records = pages.getRecords(); File fileStyleTemplate = new File("D:\不加密\SignatureManagemenExportTemplate1.xlsx"); String fileName = "签署数据导出_" + DateUtil.time(); String sheetName = "签署数据表"; Class signExportVoClass = SignExportVo.class; try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding(Charsets.UTF_8.name()); fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name()); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), signExportVoClass).withTemplate(fileStyleTemplate).sheet(sheetName).doWrite(records); 异常提示 om.alibaba.excel.exception.ExcelGenerateException: Can not close IO. at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:420) at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:99) at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:143) at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:63) ____ Caused by: java.lang.NoSuchMethodError: org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.putArchiveEntry(Lorg/apache/commons/compress/archivers/zip/ZipArchiveEntry;)V at org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager.saveImpl(ZipContentTypeManager.java:65) at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.save(ContentTypeManager.java:450) at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:608) at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1532) at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:227) at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:945) 问题描述 com.alibaba easyexcel 4.0.2 commons-io commons-io org.apache.poi poi 5.2.5 org.apache.poi poi-ooxml 5.2.5 commons-io commons-io 2.16.1 ― Reply to this email directly, view it on GitHub<#3954>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACRXFDSI4LS7NORCEOYJMSLZTL3NTAVCNFSM6AAAAABNDVOAUKVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ4DMNBVGA2DGNY. You are receiving this because you are subscribed to this thread.Message ID: @.>

只有

com.alibaba
        <artifactId>easyexcel</artifactId>
        <version>4.0.2</version>
    </dependency>

报错信息: com.alibaba.excel.exception.ExcelGenerateException: java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Cell.setCellValue(Ljava/time/LocalDateTime;)V at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:65) at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:73) at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:50) at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:62)

lolkt commented 1 month ago
    <!-- Office IO 依赖配置 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.deepoove</groupId>
        <artifactId>poi-tl</artifactId>
        <version>1.12.2</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>4.0.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml-schemas</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.16.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.27.0</version>
    </dependency>

问题解决,感谢 @psxjoy

beimingci commented 1 month ago

我也遇到了,4.0.2自带poi和commons,主要问题是缺少commons-compress包