文件读取

上传后另起线程读取会出错

java.lang.IllegalStateException: File has been moved - cannot be read again
	at org.springframework.web.multipart.commons.CommonsMultipartFile.getInputStream(CommonsMultipartFile.java:124)
	at com.zjg.bfs.web.inform.web.InformTemplateController$2.run(InformTemplateController.java:376)
	at java.lang.Thread.run(Thread.java:745)

快速开始

https://github.com/alibaba/easyexcel/blob/master/quickstart.md

EasyExcel 使用

  • 引入版本
<dependency>
   	<groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>1.1.1</version>
</dependency>
  • 监听器
public class ExcelListener extends AnalysisEventListener<ArrayList> {

    //自定义用于暂时存储data。
    //可以通过实例获取该值
    private List<ArrayList> datas = new ArrayList();

    @Override
    public void invoke(ArrayList object, AnalysisContext context) {
        System.out.println("当前行:" + context.getCurrentRowNum());
        System.out.println(object);
        datas.add(object);//数据存储到list,供批量处理,或后续自己业务逻辑处理。
        doSomething(object);//根据自己业务做处理
    }

    private void doSomething(Object object) {
        //1、入库调用接口
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // datas.clear();//解析结束销毁不用的资源
    }

    public List<ArrayList> getDatas() {
        return datas;
    }

    public void setDatas(List<ArrayList> datas) {
        this.datas = datas;
    }
}
  • 方法调用
		InputStream is = new FileInputStream("D:\\java\\test1.xlsx");
        InputStream inputStream = new BufferedInputStream(is);
        try {
            // 解析每行结果在listener中处理
            ExcelListener listener = new ExcelListener();

            ExcelReader reader = new ExcelReader(inputStream, null, listener, true);
            reader.read(new Sheet(1, 1));

            List<ArrayList> datas = listener.getDatas();
            for (ArrayList data : datas) {
                System.out.println("datas ->" + data.get(0) + "=====" + data.get(1) + "====" + data.get(2));
            }

        } catch (Exception e) {
            System.out.println(e.toString());

        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

问题参考

https://www.cnblogs.com/nm666/p/10713765.html

https://blog.youkuaiyun.com/alex_xfboy/article/details/84844667

https://github.com/alibaba/easyexcel/blob/master/quickstart.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值