excel导出,如果数据量在百万级,会出现俩点内存溢出的问题:

1. 查询数据量过大,导致内存溢出。 该问题可以通过分批查询来解决;

2. 最后下载的时候大EXCEL转换的输出流内存溢出;该方式可以通过新版的SXSSFWorkbook来解决,可通过其构造函数执指定在内存中缓存的行数,剩余的会自动缓存在硬盘的临时目录上,同时,并不会存在页面卡顿的情况;

3. 为了能够使用不同的mapper并分批写数据, 采用了外观模式和模板方法模式,大体分三步:

a. 根据总数量生成excel,确定sheet的数量和写标题;
b. 写数据,在可变的匿名内部类中实现写入逻辑;
 c. 转换输出流进行下载;

POI小demo已传github:

https://github.com/kai-li-love/project/tree/master