背景:引入了阿里的easyExcel后,导致必须用高版本的easyPoi,用了高版本的easyPoi导致ExcelExportUtil.exportBigExcel之前的写法不能使用。网上查了很久,只有一篇需要收费的技术文档。么得办法自己研究,亲测有效。欢迎伸手党使用,免费哈。
废话不多,直接上代码
//大前提,很重要!!假设导出的Excel数据是List<A> aList
//下面代码,我类 统一用A代替,需要导出的原数据用aList代替
//分别是 totalPage是总页数,pageSize 页码长度
int totalPage = (aList.size() / 10000) + 1;
int pageSize = 10000;
String fileName=”文件名“;
ExportParams exportParams = new ExportParams();
Workbook workbook = null;
workbook = ExcelExportUtil.exportBigExcel(exportParams, A.class, new IExcelExportServer() {
/**
* obj 就是下面的totalPage,限制条件
* page 是页数,他是在分页进行文件转换,page每次+1
*/
@Override
public List<Object> selectListForExcelExport(Object obj, int page) {
//很重要!!这里面整个方法体,其实就是将所有的数据aList分批返回处理
//分批的方式很多,我直接用了subList。然后 每批不能太大。我试了30000一批,
//内存溢出,貌似 最大每批10000
if (page > totalPage) {
return null;
}
// fromIndex开始索引,toIndex结束索引
int fromIndex = (page - 1) * pageSize;
int toIndex = page != totalPage ? fromIndex + pageSize :aList.size();
List<Object> list = new ArrayList<>();
list.addAll(aList.subList(fromIndex, toIndex));
return list;
}
}, totalPage);
EasyPoiUtil.exportExcel(response, workbook, fileName);
我这边 就举了一个小栗子,也是防止自己忘了,先记录下来,要是有问题,留言哈,我尽量解答