背景
若依中的excel很好用,但是并不全
使用easyexcel 自定义导出excel文件
实体类
定义一个实体类,给实体类加上注解
@ExcelIgnoreUnannotated
代表没有@ExcelProperty默认不导出
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ExcelIgnoreUnannotated
public class MaterialInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 规格代码 */
@ExcelProperty(value = "物料代码")
@Excel(name = "物料代码")
private String materialCode;
/** 物料名称 */
@Excel(name = "物料名称")
@ExcelProperty(value = "物料名称")
private String materialName;
/** 审核人 */
@Excel(name = "审核人")
@ExcelProperty(value = "审核人")
private String auditBy;
/** 审核时间 */
@ExcelProperty("审核时间")
@DateTimeFormat("yyyy-MM-dd")
private Date auditTime;
private Map<String, Object> params;
}
对于一般类型字段可以直接导出,但是对于特殊类型,你需要定义convertor
,例如如果你的字段有Map类型,就会报错,让你定义转换器
如果这个字段是父类的,你压根不用,可以再子类中再次声明一下这个属性,覆盖掉
@ExcelIgnoreUnannotated
public class MaterialInfo extends BaseEntity
{
private Map<String, Object> params;
}
使用
- 需要导出的文件File变量
- List中的实体类的class
- 是否使用默认的样式
- sheet的内容
- 用于存储数据的LIst集合变量
// 将materialInfos 写入到file中
EasyExcel.write(file, MaterialInfo.class)
.useDefaultStyle(true)
.sheet("新增物料信息")
.doWrite(materialInfos);