EasyExcel 常用 API 与注解
陈老老老板
说明:工作了,学习一些新的技术栈和工作中遇到的问题,边学习边总结,各位一起加油。需要注意的地方都标红了,还有资源的分享. 一起加油。本文是介绍 EasyExcel 常用 API 与注解
常用 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
使用位置:标准作用在成员变量上
可选属性:
注:index 属性可以指定当前字段对应 excel 中的哪一列,可以根据列名 value 去匹配,也可以不写。
如果不使用 @ExcelProperty 注解,成员变量从上到下的顺序,对应表格中从左到右的顺序;
==要么全部不写,要么全部用 index,要么全部用名字去匹配,尽量不要三个混着用。==
代码演示:
@ExcelIgnore
标注在成员变量上,默认所有字段都会和 excel 去匹配,加了这个注解会忽略该字段
代码演示:
@DateTimeFormat
标注在成员变量上,日期转换,代码中用String类型的成员变量
去接收excel中日期格式的数据
会调用这个注解。里面的value
参照java.text.SimpleDateFormat
@NumberFormat
标注在成员变量上,数字转换,代码中用String类型的成员变量
去接收excel数字格式的数据
会调用这个注解。里面的value
参照java.text.DecimalFormat
@ExcelIgnoreUnannotated
注:标注在类上。
不标注该注解时,默认类中所有成员变量都会参与读写,无论是否在成员变量上加了@ExcelProperty
的注解。
标注该注解后,类中的成员变量如果没有标注@ExcelProperty
注解将不会参与读写。
3、 读取时通用参数
ReadWorkbook
,ReadSheet
都会有的参数,如果为空,默认使用上级。
converter
转换器,默认加载了很多转换器。也可以自定义。readListener
监听器,在读取数据的过程中会不断的调用监听器。headRowNumber
指定需要读表格的 列头行数。默认有一行头,也就是认为第二行开始起为数据。head
与clazz
二选一。读取文件头对应的列表,会根据列表匹配数据。建议使用 clas,就是文件中每一行数据对应的代码中的实体类型。clazz
与head
二选一。读取文件的头对应的 class,也可以使用注解。如果两个都不指定,则会读取全部数据。autoTrim
字符串、表头等数据自动 trimpassword
读的时候是否需要使用密码
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 的编号,建议使用这个来指定读取哪个 SheetsheetName
根据名字去匹配 Sheet,excel 2003 不支持根据名字去匹配
6、写入时的注解注解
@ExcelProperty
使用位置:标准作用在成员变量上
可选属性:
使用效果:(与读一致)index
指定写到第几列,如果不指定则根据成员变量位置排序;
其他注解:
基本和读取时一致
@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
需要写入的编号。默认 0sheetName
需要些的 Sheet 名称,默认同 sheetNo
总结:EasyExcel 常用 API 与注解,特别的方便。希望对您有帮助,感谢阅读结束语:裸体一旦成为艺术,便是最圣洁的。道德一旦沦为虚伪,便是最下流的。勇敢去做你认为正确的事,不要被世俗的流言蜚语所困扰。
版权声明: 本文为 InfoQ 作者【陈老老老板】的原创文章。
原文链接:【http://xie.infoq.cn/article/10f3bae78493d319f44883a1f】。文章转载请联系作者。
评论