栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot 集成 easyexcel excel导入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot 集成 easyexcel excel导入

提示:文章如有错误的地方请指出,以免误人子弟!

easyexcel 导入

文章目录

easyexcel 导入一、导入maven jar包二、直接上代码


提示:以下是本篇文章正文内容,下面案例可供参考

一、导入maven jar包

maven 地址


    com.alibaba
    easyexcel
    3.0.5


二、直接上代码

easyexcel 官网
本文章只展示单个sheet读取。
多个sheet 读取,其实就是新加一个读sheet方法以及sheet数据类型不同,需要重写多个监听器。

    controller
@PostMapping("/importExcel")
@ResponseBody
public String excelsimport(MultipartFile multipartFile) throws IOException {
     EasyExcel.read(multipartFile.getInputStream(), FieldPersonnels.class, new ExcelHeadDataListener(fieldPersonnelService)).sheet().doRead();
     return "success";
}

FieldPersonnels.class 这个就是接收excel sheet数据类型所需的实体类,因为excel表头是中文的,为了图方便,实体类的字段名称也弄的中文。

import lombok.Data;


@Data
public class FieldPersonnels {

    private String 状态;
    private String 创建人姓名;
    private String 外勤理由;
    private String 录入时间;
    private String 项目;
    private String 外勤理由申请人;
    private String 外勤申请时间;

}

ExcelHeadDataListener 这个是监听器,需要继承AnalysisEventListener 抽象类。
fieldPersonnelService 这个是入库的方法。

监听器:

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.yrs.wcptc.entity.person.FieldPersonnel;
import com.yrs.wcptc.entity.person.FieldPersonnels;
import com.yrs.wcptc.service.person.FieldPersonnelService;
import lombok.extern.slf4j.Slf4j;

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


@Slf4j
public class ExcelHeadDataListener extends AnalysisEventListener {
    
    private static final int BATCH_COUNT = 500;
    List list = new ArrayList<>();
    
    private FieldPersonnelService fieldPersonnelService;

    public ExcelHeadDataListener(FieldPersonnelService fieldPersonnelService) {
        this.fieldPersonnelService = fieldPersonnelService;
    }

    
    @Override
    public void invoke(FieldPersonnels fieldPersonnels, AnalysisContext context) {
        log.info("解析到一条数据:{}", JSON.toJSONString(fieldPersonnels));
        FieldPersonnel fieldPersonnel = new FieldPersonnel();
        fieldPersonnel.setCreateUser(fieldPersonnels.get创建人姓名());
        fieldPersonnel.setReason(fieldPersonnels.get外勤理由());
        fieldPersonnel.setApplicant(fieldPersonnels.get外勤理由申请人());
        fieldPersonnel.setApplicationTime(fieldPersonnels.get外勤申请时间());
        fieldPersonnel.setCreateTime(fieldPersonnels.get录入时间());
        if("已使用".equals(fieldPersonnels.get状态())) {
            fieldPersonnel.setState("0");
        }
        else {
            fieldPersonnel.setState("1");
        }
        fieldPersonnel.setProjectId(fieldPersonnels.get项目());
        list.add(fieldPersonnel);
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if (list.size() >= BATCH_COUNT) {
            saveData();
            // 存储完成清理 list
            list.clear();
        }
    }

    
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 这里也要保存数据,确保最后遗留的数据也存储到数据库
        saveData();
        log.info("所有数据解析完成!");
    }

    
    private void saveData() {
        log.info("{}条数据,开始存储数据库!", list.size());
        list.remove(0);
        fieldPersonnelService.addExcelPersonList(list);
        log.info("存储数据库成功!");
    }

}
    service
    
    int addExcelPersonList(List list);
    serviceImpl
    @Override
    public int addExcelPersonList(List list) {
        return fieldPersonnelMapper.addExcelPersonList(list);
    }
    mapper
 int addExcelPersonList(List list);
    sql

    insert into field_personnel(
        reason,project_id,applicant,application_time,create_time,create_user,state
    )
    values
    
        (#{item.reason},
        #{item.projectId},
        #{item.applicant},
        #{item.applicationTime},
        #{item.createTime},
        #{item.createUser},
        #{item.state})
    

希望对你有所帮助!

Springboot 集成 easyexcel 实现导出

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号