之前做过一个关于配货单的导入和导出,导出使用的POI实现的,当数据量很大的时候,尤其是双十一或者年货节的时候,订单的量很大相应的配货单的量就非常大,这时候导出的话就经常会出现OOM异常,或者某个字段的空指针异常。
EasyExcel是阿里开源的导入导出工具,可以解决内存异常的导出问题。
easyExcel是一个基于Java的简单省内存的开源项目。在尽可能节约内存的情况下支持读写百M的Excel,github的地址:
导入依赖:
<dependent>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependent>
根据要读取的表格建立相应的对象类,
@Data
public class DemoData {
private String string;
private Date date;
private Double doubleData;
}
监听器
// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
public class DemoDataListener extends AnalysisEventListener<DemoData> {
private static final Logger LOGGER = LoggerFacto