您当前的位置: 首页 > 

梁云亮

暂无认证

  • 0浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【精品】使用阿里的EasyExcel读写Excel文档

梁云亮 发布时间:2021-11-02 11:35:45 ,浏览量:0

EasyExcel简介

EasyExcel官网

Apache POI 技术在Excel 的数据量非常大的时候,会将整个 Excel 的内容全部读出来放入到内存中,所以内存消耗非常严重,如果同时进行包含大数据量的 Excel 读操作,很容易造成内存溢出问题。EasyExcel 的出现很好的解决了 POI 相关问题,原本一个 5M 的 Excel 用 POI 需要180M左右内存, 而 EasyExcel 可以将其降低到几 M,同时再大的 Excel 都不会出现内存溢出的情况,因为是逐行读取 Excel 的内容

在这里插入图片描述

实体类
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Goods implements Serializable {
    private static final long serialVersionUID = -2737659835949653933L;

    /**
     * 商品编号
     */
    @ExcelProperty(value = "编号")
    private Integer id;
    /**
     * 商品名称
     */
    @ExcelProperty("商品名称")
    private String name;
    /**
     * 市场价格
     */
    @ExcelProperty("市场价格")
    private double price1;
    /**
     * 会员价格
     */
    @ExcelProperty("会员价格")
    private double price2;
    /**
     * 商品库存数量
     */
    @ExcelProperty("库存数量")
    private Integer amount;
}
生成Excel文件
    public static void main(String[] args) {
        final ArrayList arrayList = new ArrayList();
        for(int i =10;i= BATCH_COUNT) {
            System.out.println("已经解析"+list.size()+"条数据");
			list.clear();
		}
	}

	@Override
	public void doAfterAllAnalysed(AnalysisContext analysisContext) {
		System.out.println("存储数据库成功!");
		System.out.println("所有数据解析完成!");
	}
}


说明:从这里可以看出,虽然是逐行解析数据,但我们可以自定义阈值,完成数据的批处理操作,可见 EasyExcel 操作的灵活性

  • 具体的读取Excel的代码:
public static void main(String[] args) {
    EasyExcel.read("demo1635823544855.xlsx", Goods.class, new GoodsExcelListener())
            .sheet()
            .doRead();
}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0459s