监听器
package com.gislife.common.config;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.ArrayList;
import java.util.List;
/***
* 监听器
*/
public class ExcelModelListener extends AnalysisEventListener {
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 1 ;
List<Object> list = new ArrayList<Object>();
private static int count = 0;
@Override
public void invoke(Object data, AnalysisContext analysisContext) {
System.out.println("解析到一条数据:{ "+ data.toString() +" }");
list.add( data);
// HSSFDateUtil.getJavaDate(Double.parseDouble())
count ++;
if (list.size() >= BATCH_COUNT) {
saveData( count );
list.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// saveData( count );
System.out.println("一张表的数据解析完成!");
// System.out.println(" count :" + count);
}
/**
* 加上存储数据库
*/
private void saveData(int count) {
System.out.println("{ "+ count +" }条数据,开始存储数据库!" + list.size());
System.out.println("存储数据库成功!");
}
}
实现类
@Override
public Result excelImport(MultipartFile file) {
Result pResult = new Result();
try {
InputStream inputStream = file.getInputStream();
//dStepEntity.class这个是实体类
// new ExcelModelListener()这个是new的监听
List<Object> list1 = EasyExcel.read(inputStream, CdStepEntity.class, new ExcelModelListener()).doReadAllSync();
//打印下
System.out.println(list1.toArray());
}catch (Exception ex){
pResult.setCode(-1);
pResult.setMsg(ex.getMessage());
}
return pResult;
}