跳到主要内容

参数

本章节介绍使用 FastExcel 中的参数。

类图

通用参数

所有参数,都继承自BasicParameter

名称默认值描述
headclazz二选一。读取文件头对应的列表,会根据列表匹配数据,建议使用class
clazzhead二选一。读取文件的头对应的class,也可以使用注解。如果两个都不指定,则会读取全部数据
customConverterList默认加载了很多转换器,这里可以加入不支持的字段
autoTrimtrue会对表头、读取数据等进行自动去除前后空格
use1904windowingfalseexcel中时间是存储1900年起的一个双精度浮点数,但是有时候默认开始日期是1904,所以设置这个值改成默认1904年开始
useScientificFormatfalse数字转文本的时候在较大的数值的是否是否采用科学计数法
locale此参数用于格式化日期和数字
filedCacheLocationTHREAD_LOCAL解析class的field会有缓存,默认放到ThreadLocal ,也就是说每次读写都会重新解析class,可以反射修改class的注解,并发场景不会相互影响
THREAD_LOCAL:默认,每次读写都会缓存,但是不是同一次不会影响
MEMORY:放到全局的内存里面,理论上性能会更好,但是无法通过反射、排除等方法修改导出的对象
NONE:不缓存,性能会变差,涉及到读的同时要写,而且还要反射、排除等方法去修改对象的情况下可以考虑使用。

读操作

ReadBasicParameter 通用参数

名称默认值描述
customReadListenerList可以注册多个监听器,读取excel的时候会不断的回调监听器中的方法
headRowNumber1excel中头的行数,默认1行

ReadWorkbook 参数

名称默认值描述
excelType当前excel的类型,支持XLS、XLSX、CSV
inputStreamfile二选一。读取文件的流,如果接收到的是流就只用,不用流建议使用file参数。因为使用了inputStream FastExcel会帮忙创建临时文件,最终还是file
fileinputStream二选一。读取文件的文件。
mandatoryUseInputStreamfalse强制使用 inputStream 来创建对象,性能会变差,但是不会创建临文件。
charsetCharset#defaultCharset只有csv文件有用,读取文件的时候使用的编码
autoCloseStreamtrue自动关闭读取的流。
readCache默认小于5M用 内存,超过5M会使用 EhCache,这里不建议使用这个参数。
readCacheSelectorSimpleReadCacheSelector用于选择什么时候用内存去存储临时数据,什么时候用磁盘存储临时数据
ignoreEmptyRowtrue忽略空的行
password读取文件的密码
xlsxSAXParserFactoryName指定sax读取使用的class的名称,例如:com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
useDefaultListenertrue默认会加入ModelBuildEventListener 来帮忙转换成传入class的对象,设置成false后将不会协助转换对象,自定义的监听器会接收到Map<Integer,CellData>对象,如果还想继续接听到class对象,请调用readListener方法,加入自定义的beforeListenerModelBuildEventListener、 自定义的afterListener即可。
extraReadSet额外需要读取内容的set,默认不读取这些数据
readDefaultReturnSTRINGSTRING:会返回一个Map<IntegerString>的数组,返回值就是你在excel里面不点击单元格看到的内容
ACTUAL_DATA:会返回一个Map<Integer,Object>的数组,返回实际上存储的数据,会帮自动转换类型,Object类型为BigDecimalBooleanStringLocalDateTime、null,中的一个,
READ_CELL_DATA: 会返回一个Map<Integer,ReadCellData<?>>的数组,其中?类型参照ACTUAL_DATA的
customObjectSTRINGSTRING:会返回一个Map<IntegerString>的数组,返回值就是你在excel里面不点击单元格看到的内容
ACTUAL_DATA:会返回一个Map<Integer,Object>的数组,返回实际上存储的数据,会帮自动转换类型,Object类型为BigDecimalBooleanStringLocalDateTime、null,中的一个,
READ_CELL_DATA: 会返回一个Map<Integer,ReadCellData<?>>的数组,其中?类型参照ACTUAL_DATA的
numRows0读取指定的行数,0表示不限制行数,即读取所有行
ignoreHiddenSheettrue@since 1.3.0
忽略隐藏的sheet
csvFormatCSVFormat.DEFAULT@since 1.3.0
设置 CSVFormat 对象,仅对 csv 文件有效

ReadSheet 参数

名称默认值描述
sheetNo0需要读取Sheet的编码,建议使用这个来指定读取哪个Sheet
sheetName根据名字去匹配Sheet
sheetHiddenfalseSheet 页普通隐藏状态
sheetVeryHiddenfalseSheet 页绝对隐藏状态
numRows0读取指定的行数,0表示不限制行数,即读取所有行

写操作

WriteBasicParameter 通用参数

名称默认值描述
customWriteHandlerList写的处理器。可以实现WorkbookWriteHandler,SheetWriteHandler,RowWriteHandler,CellWriteHandler,在写入excel的不同阶段会调用
relativeHeadRowIndex0写入到excel和上面空开几行
needHeadtrue是否需要写入头到excel
useDefaultStyletrue是否使用默认的样式
automaticMergeHeadtrue自动合并头,头中相同的字段上下左右都会去尝试匹配
excludeColumnIndexes需要排除对象中的index的数据
excludeColumnFieldNames需要排除对象中的字段的数据
includeColumnIndexes只要导出对象中的index的数据
includeColumnFieldNames只要导出对象中的字段的数据
orderByIncludeColumnfalse在使用了参数includeColumnFieldNames 或者 includeColumnIndexes的时候,会根据传入集合的顺序排序

WriteWorkbook 参数

名称默认值描述
excelType当前excel的类型,支持XLS、XLSX、CSV
outputStreamfile二选一。写入文件的流
fileoutputStream二选一。写入的文件
templateInputStream模板的文件流
templateFile模板文件
charsetCharset#defaultCharset只有csv文件有用,写入文件的时候使用的编码
autoCloseStreamtrue自动关闭写入的流。
password读取文件的密码
inMemoryfalse是否在内存处理,默认会生成临时文件以节约内存。内存模式效率会更好,但是容易OOM
writeExcelOnExceptionfalse写入过程中抛出异常了,是否尝试把数据写入到excel
withBomtrue在 csv 文件中设置编码前缀,否则 office 软件可能会显示乱码
mandatoryUseInputStreamfalse强制使用 outputStream 来创建对象,性能会变差,但是不会创建临文件
csvFormatCSVFormat.DEFAULT@since 1.3.0
设置 CSVFormat 对象,仅对 csv 文件有效

WriteSheet 参数

名称默认值描述
sheetNo0需要写入的编码
sheetName需要写的Sheet名称,默认同sheetNo

WriteTable 参数

名称默认值描述
tableNo0需要写入的编码