阿里easyExcel学习笔记(maven)

阿里easyExcel(导出)学习笔记(maven)

背景

生成Excel比较有名的框架有poi和jxl。这两个方法有一个严重的问题就是非常消耗内存。虽然poi有一些api可以在一定程度上解决一些内存溢出的问题。但是poi在操作07版excel的解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyExcel 重写了 poi 对 07 版 Excel 的解析,使原本需要 100M 左右内存解析一个 3M 的 excel,降低到 KB 级别,并且再大的 excel 不会出现内存溢出,03 版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。

编码

  1. 加入依赖(1.0以内的版本有点bug。建议使用1.1以上版本)
    阿里easyExcel学习笔记(maven)

  2. 需导出Excel的实体类继承BaseRowModel并在属性上加入@ExcelProperty(value=“id”,index=0)标签。其中:value所代表的为列名,index指的是第几列(如不想使用注解的方式生成表头,可在编码时,生成table对象,使用table.setHead(String[] titles))。例:

    1. 使用注解生成表头的方式
      阿里easyExcel学习笔记(maven) 2) 使用table生成表头的示例:
      阿里easyExcel学习笔记(maven)
  3. easyExcel操作Excel的api使用示例

    1. 创建输出至目标文件的输出流
      阿里easyExcel学习笔记(maven)
    2. 创建ExcelWriter对象(写入数据至目标Excel文件的操作对象),传入输出流和所需输出excel的格 式(.xls和.xlsx两种。通常建议使用.xlsx,.xls会有点问题),第三个参数为可选参数boolean型:是否需要表头,如不需要,可填false,此时即使使用注解指定表头也不会显示,此值默认为true。
      阿里easyExcel学习笔记(maven)
    3. 创建sheet页(其中Trade为自己创建的model对象,如果不采用注解生成表头的方式,此时只有两个参数)如下所示:(四个参数,第一个表示这个是excel文档里面的第几个子表(sheet),第二个参数还不了解,第三个参数可不写,表示如果有实体类对应的时候应该是哪个类。第四个表示输入表头,可以不写。只是用前面的两个参数就行)
      a) 采用注解生成表头
      阿里easyExcel学习笔记(maven)
      b) 采用table对象生成表头。需生成sheet之后,加入生成table的方式。详情见2->2)。
      阿里easyExcel学习笔记(maven)
    4. 写入Excel,关闭流(其中list为需要导出的数据集合,第二个参数为需要为哪个sheet导出数据,第三个参数可选,传入table,如果没有定义table,可不写)
      阿里easyExcel学习笔记(maven)
  4. 如需复杂表头,请做如下修改
    只需更改实体属性中@ExcelProperty标签的value值即可,例:
    阿里easyExcel学习笔记(maven) 所以此示例为"表头1"占第一和第二列的两行。实现效果如下:
    阿里easyExcel学习笔记(maven)
    参考:参考链接