EasyExcel3.x文件导入SpringBoot2

文章介绍了如何使用阿里巴巴的EasyExcel库来处理Excel的导出和导入功能。在导出方面,通过定义实体类、自定义转换器和设置列宽、日期格式等实现了用户信息的Excel导出。对于复杂导出,通过自定义注解和合并策略实现了嵌套对象的一对多信息导出。在导入方面,展示了简单的用户信息Excel导入示例。

引入依赖

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>easyexcel</artifactId>

<version>3.1.3</version>

</dependency>

简单导出

以导出用户信息为例,接下来手把手教大家如何使用EasyExcel实现导出功能!
定义实体类

在EasyExcel中,以面向对象思想来实现导入导出,无论是导入数据还是导出数据都可以想象成具体某个对象的集合,所以为了实现导出用户信息功能,首先创建一个用户对象UserDO实体类,用于封装用户信息:

/** * 用户信息 * * @author william@StarImmortal */@DatapublicclassUserDO {

@ExcelProperty("用户编号")

@ColumnWidth(20)

privateLongid;

@ExcelProperty("用户名")

@ColumnWidth(20)

privateStringusername;

@ExcelIgnoreprivateStringpassword;

@ExcelProperty("昵称")

@ColumnWidth(20)

privateStringnickname;

@ExcelProperty("生日")

@ColumnWidth(20)

@DateTimeFormat("yyyy-MM-dd")

privateDatebirthday;

@ExcelProperty("手机号")

@ColumnWidth(20)

privateStringphone;

@ExcelProperty("身高(米)")

@NumberFormat("#.##")

@ColumnWidth(20)

privateDoubleheight;

@ExcelProperty(value = "性别", converter = GenderConverter.class)

@ColumnWidth(10)

privateIntegergender;

}

上面代码中类属性上使用了EasyExcel核心注解:

  • @ExcelProperty:核心注解,value属性可用来设置表头名称,converter属性可以用来设置类型转换器;

  • @ColumnWidth:用于设置表格列的宽度;

  • @DateTimeFormat:用于设置日期转换格式;

  • @NumberFormat:用于设置数字转换格式。

自定义转换器

在EasyExcel中,如果想实现枚举类型到字符串类型转换(例如gender属性:1 -> 男2 -> 女),需实现Converter接口来自定义转换器,下面为自定义GenderConverter性别转换器代码实现:

/** * Excel 性别转换器 * * @author william@StarImmortal */publicclassGenderConverterimplementsConverter<Integer> {

@OverridepublicClass<?> supportJavaTypeKey() {

returnInteger.class;

}

@OverridepublicCellDataTypeEnumsupportExcelTypeKey() {

returnCellDataTypeEnum.STRING;

}

@OverridepublicIntegerconvertToJavaData(ReadConverterContext<?> context) {

returnGenderEnum.convert(context.getReadCellData().getStringValue()).getValue();

}

@OverridepublicWriteCellData<?> convertToExcelData(WriteConverterContext<Integer> context) {

returnnewWriteCellData<>(GenderEnum.convert(context.getValue()).getDescription());

}

}

/** * 性别枚举 * * @author william@StarImmortal */@Getter@AllArgsConstructorpublicenumGenderEnum {

/** * 未知 */UNKNOWN(0, "未知"),

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值