easyExcel基本简单导出功能,入门级上手就会!

前言

主要是来了解如何简单的使用eaysExcel,对于EasyExcel 是一个用于读写 Excel 的 Java 库,它的主要优点是处理大数据量时,内存占用极低,因此在性能和效率上都有很好的表现。
官方网址
https://easyexcel.opensource.alibaba.com/docs/current/
可以提供导出模板或者自定义模板去填充数据,
本次就列举一些基本自带的导出操作

引入依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.1.3</version>
        </dependency>

定义实例类

@Getter
@Setter
@EqualsAndHashCode
public class StudentVO {

    @ExcelProperty("id")
    @ColumnWidth(20)
    private int id;

    @ExcelProperty("名称")
    @ColumnWidth(20)
    private String name;

    @ExcelProperty(value = "性别", converter = GenderConverter.class)
    @ColumnWidth(10)
    private Integer gender;

    @ExcelProperty("创建时间")
    @ColumnWidth(20)
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
}
  • @ExcelProperty是列表的标题,
  • @ColumnWidth(20)是导出的列表的宽,
  • @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")格式化时间
    以及其它属性可以去看看


    image.png

converter 转换类

@ExcelProperty属性里有个conveter是用来转换枚举的,例如将性别(1转成男,2转成女)


image.png

GenderConverter

新增一个GenderConverter 对性别转换

public class GenderConverter implements Converter<Integer> {

    @Override
    public Class<?> supportJavaTypeKey() {
        return Integer.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public Integer convertToJavaData(ReadConverterContext<?> context) {
        return GenderEnum.convert(context.getReadCellData().getStringValue()).getValue();
    }

    @Override
    public WriteCellData<?> convertToExcelData(WriteConverterContext<Integer> context) {
        return new WriteCellData<>(GenderEnum.convert(context.getValue()).getDescription());
    }
}

注意:
对于导出的话只要注意这个convertToExcelData方法,导出的时候他会根据你的枚举类型转换成对应值,convertToJavaData这个方法是对于导入的时候用到的,这里暂不使用,也可以去掉

性别枚举

@Getter
@AllArgsConstructor
public enum  GenderEnum {

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

    /**
     * 男性
     */
    MALE(1, "男性"),

    /**
     * 女性
     */
    FEMALE(2, "女性");

    private final Integer value;

    @JsonFormat
    private final String description;

    public static GenderEnum convert(Integer value) {
        return Stream.of(values())
                .filter(bean -> bean.value.equals(value))
                .findAny()
                .orElse(UNKNOWN);
    }

    public static GenderEnum convert(String description) {
        return Stream.of(values())
                .filter(bean -> bean.description.equals(description))
                .findAny()
                .orElse(UNKNOWN);
    }

}

导出接口

    @RequestMapping(value = "/doEasyExcel")
    public void doEasyExcel(HttpServletResponse response) throws IOException {
        try {
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        String newFileName = URLEncoder.encode(rawFileName, "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + “学生基本信息” + ".xlsx");
                List<StudentVO> list = StudentVO.getList();
            EasyExcel.write(response.getOutputStream())
                    .head(StudentVO.class)
                    // excle 格式
                    .excelType(ExcelTypeEnum.XLSX)
                     // 导出sheet名称
                    .sheet("用户列表")
                    .doWrite(list);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

导出结果

image.png

结尾

主要是基本学习easyExcel基本的导出功能,用于easyExcel自带的导出模板。总体来说easyExcel还是挺强大好用!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容