《SpringBoot篇》22.EasyExcel常用API与注解

简介: 《SpringBoot篇》22.EasyExcel常用API与注解

1、常用类


EasyExcel 入口类,用于构建开始各种操作;

ExcelReaderBuilder 构建出一个ReadWorkbook对象,即一个工作簿对象,对应的是一个Excel文件;

ExcelWriterBuilder 构建出一个WriteWorkbook对象,即一个工作簿对象,对应的是一个Excel文件;

ExcelReaderSheetBuilder 构建出一个ReadSheet对象,即一个工作表的对象,对应的Excel中的每个sheet,一个工作簿可以有多个工作表;

ExcelWriterSheetBuilder 构建出一WriteSheet对象,即一个工作表的对象,对应的Excel中的每个sheet,一个工作簿可以有多个工作表;

ReadListener 在每一行读取完毕后都会调用ReadListener来处理数据,我们可以把调用service的代码可以写在其invoke方法内部;

WriteHandler 在每一个操作包括创建单元格、创建表格等都会调用WriteHandler来处理数据,对使用者透明不可见;

所有配置都是继承的 Workbook的配置会被Sheet继承。所以在用EasyExcel设置参数的时候,在EasyExcel…sheet()方法之前作用域是整个sheet,之后针对单个sheet。

2、读取时的注解


@ExcelProperty

使用位置:标准作用在成员变量上


可选属性:

image.png

注:index属性可以指定当前字段对应excel中的哪一列,可以根据列名value去匹配,也可以不写。


如果不使用@ExcelProperty注解,成员变量从上到下的顺序,对应表格中从左到右的顺序;


要么全部不写,要么全部用index,要么全部用名字去匹配,尽量不要三个混着用。


代码演示:


// 1. 修改成员变量顺序读取Excel表格
// 2. 修改index属性值读取Excel表格
// 3. 修改value属性值读取Excel表格
@ExcelProperty(value = "学生姓名",index = 3)
private String name;

@ExcelIgnore

标注在成员变量上,默认所有字段都会和excel去匹配,加了这个注解会忽略该字段


代码演示:


// 4. 忽略id成员变量值读取Excel表格,在excel中不会显示。
@Excellgore
private String id;

@DateTimeFormat

标注在成员变量上,日期转换,代码中用String类型的成员变量去接收excel中日期格式的数据会调用这个注解。里面的value参照java.text.SimpleDateFormat


// 5. 按照指定的格式写入Excel内容
//只显示年月日
@DateTimeFormat("YYYY-MM-dd")
private Date birthday;

@NumberFormat

标注在成员变量上,数字转换,代码中用String类型的成员变量去接收excel数字格式的数据会调用这个注解。里面的value参照java.text.DecimalFormat


@ExcelIgnoreUnannotated

注:标注在类上。


不标注该注解时,默认类中所有成员变量都会参与读写,无论是否在成员变量上加了@ExcelProperty 的注解。


标注该注解后,类中的成员变量如果没有标注@ExcelProperty 注解将不会参与读写。


3、 读取时通用参数


ReadWorkbook,ReadSheet 都会有的参数,如果为空,默认使用上级。


converter 转换器,默认加载了很多转换器。也可以自定义。


readListener 监听器,在读取数据的过程中会不断的调用监听器。


headRowNumber 指定需要读表格的 列头行数。默认有一行头,也就是认为第二行开始起为数据。


head 与clazz二选一。读取文件头对应的列表,会根据列表匹配数据。建议使用clas,就是文件中每一行数据对应的代码中的实体类型。


clazz 与head二选一。读取文件的头对应的class,也可以使用注解。如果两个都不指定,则会读取全部数据。


autoTrim 字符串、表头等数据自动trim


password 读的时候是否需要使用密码


4、ReadWorkbook(工作簿对象)参数


excelType 当前excel的类型,读取时会自动判断,无需设置。

inputStream 与file二选一。建议使用file。

file 与inputStream二选一。读取文件的文件。

autoCloseStream 自动关闭流。

readCache 默认小于5M用 内存,超过5M会使用 EhCache,不建议使用这个参数。

useDefaultListener @since 2.1.4 默认会加入ModelBuildEventListener 来帮忙转换成传入class的对象,设置成false后将不会协助转换对象,自定义的监听器会接收到Map<Integer,CellData>对象,如果还想继续接听到class对象,请调用readListener方法,加入自定义的beforeListener、 ModelBuildEventListener、 自定义的afterListener即可。

5、ReadSheet(工作表对象)参数


sheetNo 需要读取Sheet的编号,建议使用这个来指定读取哪个Sheet

sheetName 根据名字去匹配Sheet,excel 2003不支持根据名字去匹配

6、写入时的注解注解


@ExcelProperty

使用位置:标准作用在成员变量上


可选属性:

image.png

使用效果:(与读一致)

index 指定写到第几列,如果不指定则根据成员变量位置排序;


value指定写入的列头,如果不指定则使用成员变量的名字作为列头;


如果要设置复杂的头,可以为value指定多个值。


其他注解:

基本和读取时一致


@ContentRowHeight() 标注在类上或属性上,指定内容行高


@HeadRowHeight() 标注在类上或属性上,指定列头行高


@ColumnWidth() 标注在类上或属性上,指定列宽


ExcelIgnore` 默认所有字段都会写入excel,这个注解会忽略这个字段


DateTimeFormat 日期转换,将Date写到excel会调用这个注解。里面的value参照java.text.SimpleDateFormat


NumberFormat 数字转换,用Number写excel会调用这个注解。里面的value参照java.text.DecimalFormat


ExcelIgnoreUnannotated 默认不加 ExcelProperty 的注解的都会参与读写,加了不会参与


7、写入时通用参数


WriteWorkbook、WriteSheet都会有的参数,如果为空,默认使用上级。


converter 转换器,默认加载了很多转换器。也可以自定义。


writeHandler 写的处理器。可以实现WorkbookWriteHandler,SheetWriteHandler,RowWriteHandler,CellWriteHandler,在写入excel的不同阶段会调用,对使用者透明不可见。


relativeHeadRowIndex 距离多少行后开始。也就是开头空几行


needHead 是否导出头


head 与clazz二选一。写入文件的头列表,建议使用class。


clazz 与head二选一。写入文件的头对应的class,也可以使用注解。


autoTrim 字符串、表头等数据自动trim


8、WriteWorkbook(工作簿对象)参数


excelType 当前excel的类型,默认为xlsx


outputStream 与file二选一。写入文件的流


file 与outputStream二选一。写入的文件


templateInputStream 模板的文件流


templateFile 模板文件


autoCloseStream 自动关闭流。


password 写的时候是否需要使用密码


useDefaultStyle 写的时候是否是使用默认头


9、WriteSheet(工作表对象)参数


sheetNo 需要写入的编号。默认0


sheetName 需要些的Sheet名称,默认同sheetNo


相关文章
|
5天前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
11天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
28 4
|
13天前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
46 3
|
12天前
|
IDE Java API
基于Spring Boot REST API设计指南
【10月更文挑战第4天】 在现代的软件开发中,RESTful API已经成为了构建网络应用的标准之一。它通过HTTP协议提供了与资源交互的方式,使得不同的应用程序能够进行数据交互。Spring Boot作为一个功能强大的框架,它简化了配置和开发流程,成为了构建RESTful API的理想选择。本文将详细介绍如何在Spring Boot中设计和实现高质量的RESTful API,并提供一些最佳实践。
31 1
|
10天前
|
缓存 Java API
基于Spring Boot REST API设计指南
【10月更文挑战第11天】 在构建现代Web应用程序时,RESTful API已成为一种标准,使得不同的应用程序能够通过HTTP协议进行通信,实现资源的创建、读取、更新和删除等操作。Spring Boot作为一个功能强大的框架,能够轻松创建RESTful API。本文将详细介绍如何在Spring Boot中设计和实现高质量的RESTful API。
106 61
|
18天前
|
XML Java 数据格式
Spring从入门到入土(bean的一些子标签及注解的使用)
本文详细介绍了Spring框架中Bean的创建和使用,包括使用XML配置文件中的标签和注解来创建和管理Bean,以及如何通过构造器、Setter方法和属性注入来配置Bean。
56 9
Spring从入门到入土(bean的一些子标签及注解的使用)
|
10天前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
17天前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
15天前
|
XML Java 数据库
Spring boot的最全注解
Spring boot的最全注解
|
16天前
|
JSON NoSQL Java
springBoot:jwt&redis&文件操作&常见请求错误代码&参数注解 (九)
该文档涵盖JWT(JSON Web Token)的组成、依赖、工具类创建及拦截器配置,并介绍了Redis的依赖配置与文件操作相关功能,包括文件上传、下载、删除及批量删除的方法。同时,文档还列举了常见的HTTP请求错误代码及其含义,并详细解释了@RequestParam与@PathVariable等参数注解的区别与用法。