「这是我参与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();
复制代码
复制代码