日常开发中,难免遇到需要导入导出的业务场景,如果直接通过poi提供的接口,代码编写繁琐不说,而且还容易出错。 今天在这里给大家推荐一款非常好用的 Excel 导入导出工具工具:zouzhiy-excel。希望对大家有所帮助。
zouzhiy-excel 简介
zouzhiy-excel 是一款 Excel 导入导出的轻量级工具。对 POI 的接口做了一层封装,使导入导出更加简便快捷。
zouzhiy-excel 优势
zouzhiy-excel 支持一对多导入,简单的自定义即可实现一条数据写入多行,一个属性对象写入多列的功能。
- 默认大于配置,不需要显式的标注注解。反向解析,不需要的字段或者需要自定义配置的字段才需要注解标注
- 支持模板导出。可以预先设置好标题,表头,数据行格式。写入的数据自动继承模板的格式
- 支持一对多导入导出。一个数据对象占据不固定的多行多列。
- 支持拆分写入不同列。如:用户信息作为一个对象,可通过自定义CellHandler,实现多列写入,一列显示姓名,一列显示通信方式等。
- 支持自定义单元格格式,基本囊括了poi提供的style属性
- 支持自定义标题,表头,表尾写入
- 提供回调函数,可在导入导出过程中提供一些回调操作,比如:修改根据配置生成的样式、修改数据等
Spring 环境下集成
<dependency>
<groupId>io.github.zouzhiy</groupId>
<artifactId>zouzhiy-excel-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
开始使用
今天来介绍一下自定义CellHandler实现字典值的转换,自动对性别显示值与存储值直接转换。
- 首先创建一个数据对象
@Data
@Builder
@ExcelClass
@NoArgsConstructor
@AllArgsConstructor
public class DictDemoVO {
@ExcelField(title = "姓名")
private String username;
@ExcelField(title = "手机号码")
private String tel;
@ExcelField(title = "年龄")
private Integer age;
@ExcelField(title = "出生日期")
private LocalDate birthDay;
@ExcelField(title = "分数")
private BigDecimal score;
/**
* 性别
* <pre>
* 0 未知性别
* 1 男性
* 2 女性
* </pre>
*/
@ExcelField( title = "性别", cellHandler = GenderHandler.class)
private Integer gender;
}
需要在 @ExcelField 注解上显示指定对应的 cellHandler
- 自定义CellHandler 并注册到 Spring 中
@Component
public class GenderHandler extends AbstractCellHandler<Integer> {
private final static String UNKNOWN_STRING = "未知";
private final static String MALE_STRING