引言
在后台管理系统的开发过程中Excel文件的批量编辑操作时最常见的需求,比如Excel文件的批量导入编辑和数据记录的批量导出为Excel文件等。在实现此类需求时后端开发通常采用POI作为工具类,然而直接采用POI实现Excel文件的批量编辑功能通常需要编写较多的重复代码,开发效率较低。针对该痛点,本文将介绍如何利用EasyPOI(一个基于POI实现的工具类)高效实现导出需求。本文则通过实例的方式介绍说明如何利用EasyPOI实现Excel一对多导出以及大数据批量导出的功能。
Excel一对多导出
在商品运营中后台,由于一个商品对应于多个不同的SKU规格,且每个SKU又有对应多个不同的仓库,该特性导致商品的批量导出操作需要是一对多的关系导出。下面就以商品编辑信息导出为例说明利用EasyPOI实现一对多导出的方式。
示例代码
PO类
@Data
public class GoodsSalesInfoVO implements Serializable {
private static final long serialVersionUID = -1443811068930105508L;
@Excel(name = "商品ID", needMerge = true, width = 20)
private Long goodsId;
@Excel(name = "商品名称", needMerge = true, width = 20)
private String goodsName;
@Excel(name = "编辑状态", needMerge = true, dict = "goodsEditStatus", width = 20)
private Integer editStatus;
@Excel(name = "供应商", needMerge = true, width = 20)
private String supplier;
@ExcelCollection(name = "")
private List goodsSalesInfoSkuVOList;
}
@Data
public class GoodsSalesInfoSkuVO implements Serializable {
private static final long serialVersionUID = 977499895912206399L;
@Excel(name = "SkuID", needMerge = true, width = 20)
private String skuId;
@Excel(name = "Sku规格", needMerge = true, width = 20)
private String skuDesc;
@Excel(name = "成本价", needMerge = true, width = 20)
private BigDecimal costPrice;
@Excel(name = "供应商价", needMerge = true, width = 20)
private BigDecimal supplierPrice;
@Excel(name = "销售价", needMerge = true, width = 20)
private BigDecimal salePrice;
@Excel(name = "市场价&#