java-springboot-Excel导入导出基本操作--EasyPoi

在平时的业务系统开发中,经常需要用到导入、导出Excel的功能,本文介绍了一款非常好用的工具EasyPoi,EasyPoi方便我们编写excel和word的模板导入和导出,是对poi的封装的一个工具类,可以让不懂导入导出的我们快速使用poi完成Excel和word的各种操作。

EasyPoi中的Excel自适应xls和xlsx两种格式。
功能介绍:

1.Excel导入
注解导入Map导入
大数据量导入sax模式导入文件保存
文件校验字段校验

2.Excel导出
注解导出
模板导出
html导出

基于注解的导入导出,修改注解就可以修改Excel。
支持常用的样式自定义。
基于map可以灵活定义的表头字段。
支持模板的导出,一些常见的标签,自定义标签。
支持HTML/Excel转换。
支持word的导出,支持图片,Excel。

EasyPoi的使用
1.easypoi 父包
2.easypoi-annotation 基础注解包,作用与实体对象上,拆分后方便maven多工程的依赖管理
3.easypoi-base 导入导出的工具包,可以完成Excel导入,导出,Word的导出,Excel的导出功能
4.easypoi-web 耦合了spring-mvc 基于AbstractView,极大的简化spring-mvc下的导出功能

Spring Boot 2.x版本以上项目的依赖

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.1.0</version>
</dependency>

Excel导入导出

注解有5个类分别是
@Excel 作用到filed上面,是对Excel一列的一个描述。
@ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示。
@ExcelEntity 表示一个继续深入导出的实体,但没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段。
@ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导出。
@ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理。

Excel导入

导入实体类例子:

@Excel(name = "编号")
private String id;
@Excel(name = "姓名",width = 10)
private String name;
@Excel(name = "年龄",replace = {"10岁_10","11岁_11"})
private Integer age;
@Excel(name = "生日",exportFormat = "yyyy-MM-dd",width = 16)
private Date birthday;

导入的基本代码:

@Test
public void test() {
    ImportParams params = new ImportParams();
    params.setTitleRows(1);
    params.setHeadRows(1);
    long start = new Date().getTime();
    List<MsgClient> list = ExcelImportUtil.importExcel(
            new File(PoiPublicUtil.getWebRootPath("import/ExcelExportMsgClient.xlsx")),
            MsgClient.class, params);
    System.out.println(new Date().getTime() - start);
    System.out.println(list.size());
    System.out.println(ReflectionToStringBuilder.toString(list.get(0)));
}

ImportParams这个类是用于设置导入参数的。

Excel导入校验:
对象上加上通用或者自定义校验规则,然后
params.setNeedVerfiy(true);
配置校验即可。

Excel导出

导出实体类例子:

//id
private String id;
//学生姓名
@Excel(name = "学生姓名", height = 20, width = 30, isImportField = "true_st")
private String name;
//学生性别
@Excel(name = "学生性别", replace = { "男_1", "女_2" }, suffix = "生", isImportField = "true_st")
private int sex;
@Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd", isImportField = "true_st", width = 20)
private Date birthday;
@Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd")
private Date registrationDate;

设置4列分别是 学生姓名,学生性别,出生日期,进校日期,其中学生姓名定义了列高,学生性别存在数据库是数字,需要转换,两个日期都进行了格式化输出。

生成Excel代码如下:

Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("计算机一班学生","学生"), StudentEntity.class, list);

参考文献:http://easypoi.mydoc.io/

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值