EasyExcel读取文件-同步处理数据
程序员文章站
2022-06-20 08:50:46
读取代码 解析对象 Listener ......
读取代码
// 前端传过来的文件 multipartfile file; inputstream inputstream = file.getinputstream(); // 读取excel数据,边读取边处理; easyexcel.read(inputstream, importskuidlist.class, new skuidexcelistener(sendcouponcusrecordservice)).sheet().doread();
解析对象
public class importskuidlist{ @excelproperty(index = 0) /** 商品编号*/ private long skuid; // 省略get set .... }
listener
public class skuidexcelistener extends analysiseventlistener<importskuidlist> { private static final logger logger = loggerfactory.getlogger(skuidexcelistener.class); // spring的方式需要通过构造函数传进来 private sendcouponcusrecordservice sendcouponcusrecordservice; /** * 每隔100条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 */ private static final int batch_count = 100; private volatile int totalcount = 0; list<importskuidlist> list = new arraylist<>(); /** * 如果使用了spring,请使用这个构造方法。每次创建listener的时候需要把spring管理的类传进来 * */ public skuidexcelistener(sendcouponcusrecordservice sendcouponcusrecordservice) { this.sendcouponcusrecordservice = sendcouponcusrecordservice; } /** * 这个每一条数据解析都会来调用 * * @param data * one row value. is is same as {@link analysiscontext#readrowholder()} * @param context */ @override public void invoke(importskuidlist data, analysiscontext context) { totalcount ++; list.add(data); // 达到batch_count了,需要去存储一次数据库,防止数据几万条数据在内存,容易oom if (list.size() >= batch_count) { dealdata(context); // 存储完成清理 list list.clear(); } } /** * 所有数据解析完成了 都会来调用 * @param context */ @override public void doafterallanalysed(analysiscontext context) { // 这里也要保存数据,确保最后遗留的数据也存储到数据库 dealdata(context); logger.info("所有数据解析完成!"); } /** * 加上存储数据库 */ private void dealdata(analysiscontext context) { logger.info("当前正在处理第[{}]行数据,本次处理[{}]条数据,总共有:{}条数据",context.readrowholder().getrowindex(),list.size(),totalcount); // 实际处理逻辑 sendcouponcusrecordservice.dealuploaddata(list); } }
推荐阅读
-
Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果(附demo源码下载)
-
java中读取配置文件中数据的具体方法
-
Spring Boot 从静态json文件中读取数据所需字段
-
asp.net实现从Txt文件读取数据到数据视图的方法
-
springboot openfeign从JSON文件读取数据问题
-
Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果(附demo源码下载)
-
java中读取配置文件中数据的具体方法
-
Spring Boot 从静态json文件中读取数据所需字段
-
Java读取properties文件连接数据库的方法示例
-
js读取json文件片段中的数据实例