easyexcel导入Excel

easyexcel导入

controller

@RequestMapping(value = "/read",method = RequestMethod.POST)
@ResponseBody
public String readExcel(@RequestParam("readExcel") MultipartFile file) {

    try {
        /**
         * Build excel the read
         *
         * @param inputStream
         *            Input stream to read.
         *            输入要读取的流
         * @param head
         *            Annotate the class for configuration information.
         *            每行存储的实体类型
         * @param readListener
         *            Read listener.
         *            读监听器,每读一行内容都会调用一次该对象的invoke,在invoke中可以操作读取到的数据
         * @return Excel reader builder.
         */

        //获得工作簿
        ExcelReaderBuilder read = EasyExcel.read(file.getInputStream(), ReadFile.class, new ExcelListener());
        //获得工作表  又两种形形式可以通过下标也可以通过名字2003Excel不支持名字
        ExcelReaderSheetBuilder sheet = read.sheet();
        //进行读操作
        sheet.doRead();
        return "ok";
    } catch (Exception e) {
        e.printStackTrace();
        return "error";
    }
}

listener

package com.cat.youth_learning.Listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.cat.youth_learning.mapper.YouthMapper;
import com.cat.youth_learning.pojo.ReadFile;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.List;

/**
 * EasyExcel 导入监听
 */
public class ExcelListener extends AnalysisEventListener<ReadFile> {
    private final Integer MAX_LIST_SIZE=5;

    List<ReadFile> list=new ArrayList<>();

   publicExcelListener(YouthMapper youthMapper) {
       this.youthMapper = youthMapper;
    }
    @Autowired
    YouthMapper youthMapper;


    /**
     * @param data
     * @param context
     */
    @Override
    public void invoke(ReadFile data, AnalysisContext context) {
        list.add(data);
        if (list.size()%MAX_LIST_SIZE==0){
            savelist();
            list.clear();
        }
    }

    /**
     * 读取文档后调用的方法
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
    //将剩余的也添加
		savelist();
    }
}
private void saveData() {
	System.out.println(list.size()+"条数据,开始存储数据库!");
	System.out.println(list);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值