EasyExcel读取excel文件

EasyExcel读取excel文件

自用

step 1:引入依赖

<!--easyexcel依赖-->
		<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>easyexcel</artifactId>
			<version>2.0.5</version>
		</dependency>

step 2:编写通用工具类

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.springframework.stereotype.Service;

import java.io.InputStream;
import java.util.*;


public class ExcelUtils {

    /**
     * 根据excel输入流,读取excel文件
     *
     * @param inputStream exece表格的输入流
     * @return 返回双重list的集合
     **/
    public static List<List<String>> getWithoutHead(InputStream inputStream) {
        StringExcelListener listener = new StringExcelListener();
        //不读取表头
        ExcelReader excelReader = EasyExcelFactory.read(inputStream, null, listener).headRowNumber(1).build();
        excelReader.read();
        List<List<String>> datas = listener.getDatas();
        excelReader.finish();
        return datas;
    }

    private static class StringExcelListener extends AnalysisEventListener {

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

        /**
         * 每解析一行都会回调invoke()方法
         *
         * @param object  读取后的数据对象
         * @param context 内容
         */
        @Override
        public void invoke(Object object, AnalysisContext context) {
            @SuppressWarnings("unchecked") Map<String, String> stringMap = (HashMap<String, String>) object;
            //数据存储到list,供批量处理,或后续自己业务逻辑处理。
            datas.add(new ArrayList<>(stringMap.values()));
            //根据自己业务做处理
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            //解析结束销毁不用的资源
            //注意不要调用datas.clear(),否则getDatas为null
        }

        /**
         * 返回数据
         *
         * @return 返回读取的数据集合
         **/
        public static  List<List<String>> getDatas() {
            return datas;
        }

        /**
         * 设置读取的数据集合
         *
         * @param datas 设置读取的数据集合
         **/
        public void setDatas(List<List<String>> datas) {
            this.datas = datas;
        }
    }

	// 这里的excel文件可以 为xls或xlsx结尾
    public static  List<Object> readExcel(InputStream inputStream) {
    	if(inputStream==null){
    		return null;
    	}
        
        List<List<String>> result = new ArrayList<>();
        try {
            result = this.getWithoutHead(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
       return Collections.singletonList(result);
    }
    
	public static List<Object> readExcel(File file) {
		if(file==null){
			return null;
		}
        List<List<String>> result = new ArrayList<>();
        try {
            result = this.getWithoutHead(new FileInputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        }
       return Collections.singletonList(result);
    }
}

后续补充注入实体类

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值