easyexcel导入百万级数据

本文介绍了使用EasyExcel库在Java中处理百万级数据的步骤,包括添加依赖、创建Excel数据模型、自定义监听器以及处理上传文件的导入操作。
摘要由CSDN通过智能技术生成

导入百万级数据
下面是使用EasyExcel导入百万级数据的步骤:

1.添加EasyExcel依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.3.0</version>
</dependency>

2.创建一个Java对象来表示Excel中的每行数据。

@Data
public class ExcelPetitionDto {

    private String id;

    @ExcelProperty("事件编号")
    private String petitionNumber;

    @NotBlank
    @ExcelProperty("事件标题")
    private String title;


    @ExcelProperty("事件描述")
    private String content;

    @JsonFormat(timezone = "GMT+8", pattern ="yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "登记时间")
    private Date registorOn;

3.创建监听类做一些特殊数据操作(无特殊数据处理也可以不用监听类)

// 创建一个监听器来处理读取的数据

/**
 * @author :wangjp
 * @date :2023/12/27 9:06
 */
public class PetitionExcelListener extends AnalysisEventListener<ExcelPetitionDto> {
    @Override
    public void invoke(ExcelPetitionDto o, AnalysisContext analysisContext) {
    // 处理每行数据的逻辑
    }

    /**
     * 解析完,全部回调
     *
     * @param analysisContext
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        //解析完,全部回调逻辑实现
       
    }

4.使用

    @PostMapping("/importProvPetition")
    @IgnoreToken
    public AjaxResult importProvPetition(MultipartFile file) throws Exception {
        //获取文件的输入流
        InputStream inputStream = file.getInputStream();
        List<ExcelPetitionDto> lst = EasyExcel.read(inputStream) //调用read方法
                //注册自定义监听器,字段校验可以在监听器内实现
                .registerReadListener(new PetitionExcelListener())
                .head(ExcelPetitionDto.class) //对应导入的实体类
                .sheet(0) //导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据
                .headRowNumber(1) //列表头行数,1代表列表头有1行,第二行开始为数据行
                .doReadSync(); //开始读Excel,返回一个List<T>集合,继续后续入库操作

		//执行数据库操作
   }
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值