使用easyexcel导出csv,遇到坑

文章讲述了在使用EasyExcel处理大文件时,SpringBoot项目中遇到的内存溢出问题,主要原因是缺少ApacheCommonsCompress依赖。通过添加poi及其ooxml依赖,解决了类找不到的错误并成功完成写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EasyExcel 作为阿里的开源软件,是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。

使用

springboot整合easyexcel,引入pom

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.1.1</version>
        </dependency>

java实现

//实体
    @ExcelProperty("id")
    private String id;

//serviceImpl实现
List<Data> res = new ArrayList();
        EasyExcel.write("D:\\data\\csv\\test.csv", Data.class)
                .excelType(ExcelTypeEnum.CSV)
                .sheet("data")
                .doWrite(res);

报错了

执行到.doWrite(res);抛出了异常

com.alibaba.excel.exception.ExcelGenerateException: java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/Lists
	at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:65)
	at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:70)
	at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:47)
	at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:62)
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/Lists
	at com.alibaba.excel.metadata.csv.CsvRow.<init>(CsvRow.java:53)
	at com.alibaba.excel.metadata.csv.CsvSheet.createRow(CsvSheet.java:101)
	at com.alibaba.excel.util.WorkBookUtil.createRow(WorkBookUtil.java:88)
	at com.alibaba.excel.context.WriteContextImpl.initHead(WriteContextImpl.java:245)
	at com.alibaba.excel.context.WriteContextImpl.initSheet(WriteContextImpl.java:209)
	at com.alibaba.excel.context.WriteContextImpl.currentSheet(WriteContextImpl.java:135)
	at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:54)
	... 4 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.utils.Lists
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 11 more

解决

pom需要添加poi的2个依赖

 <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

09:33:05.966 [main] DEBUG com.alibaba.excel.context.WriteContextImpl - Can not find sheet:null ,now create it
09:33:06.024 [main] INFO com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder - create new style:com.alibaba.excel.write.metadata.style.WriteCellStyle@c5cdd045,null
09:33:06.032 [main] INFO com.alibaba.excel.util.StyleUtil - create new font:com.alibaba.excel.write.metadata.style.WriteFont@96caf36,null
09:33:06.390 [main] DEBUG com.alibaba.excel.context.WriteContextImpl - Finished write.

完毕

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值