使用EaasyPOI实现导入导出功能

「这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战」。

什么是EaasyPOI?

easypoi就是可以让一个没见接触过poi的人员就可以方便的写出Excel导入,Excel导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法,虽然不如poi那么自定义但是可以简化很多我们的代码量

@Excel注解

@Excel注解,是必须使用的注解,放在实体Bean上方,作用到filed上面,是对Excel一列的一个描述。如果需求简单只使用这一个注解就可以了,涵盖了常用的Excel需求,需要了解一些功能:分为基础(数据导入导出),图片处理,时间处理,合并处理等,要知道遇到功能需求时,可以使用easypoi快速上手即可。

插件和yml配置

Pom.xml中配置插件,easypoi-spring-boot-starter插件是sprinboot整合EasyPOI的插件。

<!--excel操作 springboot-easypoi-->
<dependency>
 <groupId>cn.afterturn</groupId>
 <artifactId>easypoi-spring-boot-starter</artifactId>
 <version>4.1.2</version>
</dependency>
复制代码

配置application.yml,实体bean之间进行覆盖,从而达到导入的安全性。后发现的bean会覆盖之前相同名称的bean。

spring:
  main:
   allow-bean-definition-overriding: true
复制代码

实体Bean

声明的属性上方加上 @Excel注解,增加属性。

@Data
public class User implements Serializable {
 @Excel(name = "序号")
 private Integer id;
 @Excel(name = "姓名")
 private String name;
 @Excel(name = "年龄")
 private Integer age;
 @Excel(name = "备注")
 private String remark;
 
}
复制代码

导入导出工具类ExcelUtils

ExcelUtils官网是一个外网,这里简单说一下自定义excelutils模板流程,总的来说就是先在excel的表格里自定义excelutils模板,然后获取需要传入的数据集合,最后通过export()方法成功导出。

定义excel模版时需要在excel中使用自定义标签,这里就不多少了。

导入功能示例

获取导入数据list集合:以下以user表为例的获取方法,需要根据自定义excelutils模板来执行,最后调用导入数据库方法即可。

 public  String uploadExcel(@RequestParam("file")MultipartFile file){
        long startTime=System.currentTimeMillis();
        try {
                List<User> list= ExcelUtils.importExcel(file,User.class);
               
                for(int i=0;i<list.size();i++){
                    System.out.println(list.get(i));
                }
            } catch (IOException e) {
                e.printStackTrace();
        }
        long endTime=System.currentTimeMillis();
        System.out.println("用时:"+(endTime-startTime));
        return "/index";
    }
复制代码

导出功能示例

以下是简单的demo。并不能直接使用,思路:获取数据放入集合中,然后通过输出流进行导出指定路径

public  void exportExcel(User user){
    List<User> list=new ArrayList<>();
        list.add(u);
    ExcelUtils.exportExcel();
}
复制代码
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        FileOutputStream fos = new FileOutputStream("D:/excel/exportTemp_image.xls");
        book.write(fos);
        fos.close();
复制代码
复制代码

猜你喜欢

转载自juejin.im/post/7036229798191955998