学习EasyExcel实现excel文件的批量上传的笔记

参考官网上的内容
官网地址如下:
​ https://yuque.com/easyexcel
git地址:
​ https://gitcode.net/mirrors/alibaba/easyexcel?utm_source=csdn_github_accelerator

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:[https://github.com/alibaba/easyexcel]
对应的导入的jar包同样也有提供

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

具体代码参考官网上的demo

https://www.yuque.com/easyexcel/doc/read

1)根据excel里的内容,创建对应的实体类

​ 2)创建对应的监听类,并且实现ReadListener接口并且需要在监听器内,invoke方法和

​ doAfterAllAnalysed方法,其中invoke方法当EasyExcel解析了一条数据后就会执行, doAfterAllAnalysed方法,在所有数据都解析完成后会执行。

官网提供了多种方式与Excel中的列对应上

 /**
     * 强制读取第三个 这里不建议 index 和 name 同时用,要么一个对象只用index,要么一个对象只用name去匹配
     */
    @ExcelProperty(index = 2)
    /**
     * 用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据
     */
    @ExcelProperty("字符串标题")

编写监听器继承AnalysisEventListener

public class ExcelListener extends AnalysisEventListener<TbClueExcelVo> {
  /**
	 * 每解析一行数据都要执行一次
	 * @param data
	 * @param context
	 */
	@Override
	public void invoke(TbClueExcelVo data, AnalysisContext context) {
    	xxx
	}

	/**
	 * 当所有数据都解析完成后会执行
	 * @param context
	 */
	@Override
	public void doAfterAllAnalysed(AnalysisContext context) {
      	xxx
	}
}

实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    @ExcelProperty("ID")
    private Integer id;
    @ExcelProperty("姓名")
    private String name;
    @ExcelProperty("年龄")
    private Integer age;
    @ExcelProperty("性别")
    private String gender;
}

监听器

public class DataReadListener extends AnalysisEventListener<User> {

    @Override
    public void invoke(User user, AnalysisContext analysisContext) {
        System.out.println("invoke");
        System.out.println(user);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("doAfterAllAnalysed");
    }
}

main方法

public class ReadExcelDemo1 {
    public static void main(String[] args) {
        EasyExcel.read(new File("E:/上传的文件名.xlsx"), new DataReadListener()).head(User.class).sheet(0).doRead();
    }
}

写excel

/**
 * 写入Excel
 */
public class WriteExcelDemo1 {
    public static void main(String[] args) {
        EasyExcel.write(new File("E:/笑傲江湖.xlsx"), User.class).sheet("笑傲江湖").doWrite(getData());
    }

    public static List<User> getData(){
        List<User> userList = new ArrayList<>();
        userList.add(new User(1,"白眉鹰王", 58, "男"));
        userList.add(new User(2,"青翼蝠王", 45, "男"));
        userList.add(new User(3,"金毛狮王", 55, "男"));
        userList.add(new User(4,"紫衫龙王", 48, "女"));
        return userList;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值