跳到主要内容
版本:3.0.x

写excel

注解​

使用注解很简单,只要在对应的实体类上面加上注解即可。

ExcelProperty​

用于匹配excel和实体类的匹配,参数如下:

名称默认值描述
value空用于匹配excel中的头,必须全匹配,如果有多行头,会匹配最后一行头
orderInteger.MAX_VALUE优先级高于value,会根据order的顺序来匹配实体和excel中数据的顺序
index-1优先级高于value和order,会根据index直接指定到excel中具体的哪一列
converter自动选择指定当前字段用什么转换器,默认会自动选择。写的情况下只要实现com.alibaba.excel.converters.Converter#convertToExcelData(com.alibaba.excel.converters.WriteConverterContext<T>) 方法即可

ExcelIgnore​

默认所有字段都会和excel去匹配,加了这个注解会忽略该字段

ExcelIgnoreUnannotated​

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

DateTimeFormat​

日期转换,用String去接收excel日期格式的数据会调用这个注解,参数如下:

名称默认值描述
value空参照java.text.SimpleDateFormat书写即可
use1904windowing自动选择excel中时间是存储1900年起的一个双精度浮点数,但是有时候默认开始日期是1904,所以设置这个值改成默认1904年开始

NumberFormat​

数字转换,用String去接收excel数字格式的数据会调用这个注解。

名称默认值描述
value空参照java.text.DecimalFormat书写即可
roundingModeRoundingMode.HALF_UP格式化的时候设置舍入模式

参数​

概念介绍​

  • WriteWorkbook 可以理解成一个excel
  • WriteSheet 理解成一个excel里面的一个表单
  • WriteTable 一个表单里面如果有多个实际用的表格,则可以用WriteTable

通用参数​

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

名称默认值描述
converter空默认加载了很多转换器,这里可以加入不支持的字段
writeHandler空写的处理器。可以实现WorkbookWriteHandler,SheetWriteHandler,RowWriteHandler,CellWriteHandler,在写入excel的不同阶段会调用
relativeHeadRowIndex0写入到excel和上面空开几行
head空与clazz二选一。读取文件头对应的列表,会根据列表匹配数据,建议使用class
clazz空与head二选一。读取文件的头对应的class,也可以使用注解。如果两个都不指定,则会读取全部数据
autoTrimtrue会对头、读取数据等进行自动trim
use1904windowingfalseexcel中时间是存储1900年起的一个双精度浮点数,但是有时候默认开始日期是1904,所以设置这个值改成默认1904年开始
useScientificFormatfalse数字转文本的时候在较大的数值的是否是否采用科学计数法
needHeadtrue是否需要写入头到excel
useDefaultStyletrue是否使用默认的样式
automaticMergeHeadtrue自动合并头,头中相同的字段上下左右都会去尝试匹配
excludeColumnIndexes空需要排除对象中的index的数据
excludeColumnFieldNames空需要排除对象中的字段的数据
includeColumnIndexes空只要导出对象中的index的数据
includeColumnFieldNames空只要导出对象中的字段的数据

WriteWorkbook​

提示

设置方法如下,找不到参数的看下通用参数里面是否存在。

 EasyExcel.write(fileName, DemoData.class)
// 在 write 方法之后, 在 sheet方法之前都是设置WriteWorkbook的参数
.sheet("模板")
.doWrite(() -> {
// 分页查询数据
return data();
});
名称默认值描述
excelType空当前excel的类型,支持XLS、XLSX、CSV
outputStream空与file二选一。写入文件的流
file空与outputStream二选一。写入的文件
templateInputStream空模板的文件流
templateFile空模板文件
charsetCharset#defaultCharset只有csv文件有用,写入文件的时候使用的编码
autoCloseStreamtrue自动关闭写入的流。
password空读取文件的密码
inMemoryfalse是否在内存处理,默认会生成临时文件以节约内存。内存模式效率会更好,但是容易OOM
writeExcelOnExceptionfalse写入过程中抛出异常了,是否尝试把数据写入到excel

WriteSheet​

提示

设置方法如下,找不到参数的看下通用参数里面是否存在。

 EasyExcel.write(fileName, DemoData.class)
.sheet("模板")
// 在 sheet 方法之后, 在 doWrite方法之前都是设置WriteSheet的参数
.doWrite(() -> {
// 分页查询数据
return data();
});
名称默认值描述
sheetNo0需要写入的编码
sheetName空需要些的Sheet名称,默认同sheetNo

WriteTable​

提示

设置方法如下,找不到参数的看下通用参数里面是否存在。

        EasyExcel.write(fileName, DemoData.class)
.sheet("模板")
.table()
// 在 table 方法之后, 在 doWrite方法之前都是设置WriteTable的参数
.doWrite(() -> {
// 分页查询数据
return data();
});
名称默认值描述
tableNo0需要写入的编码