原来程序用的poi的HSSF导出excel,后面数据量增多再导出报错(Invalid row number (65536) outside allowable range (0..65535)),然后改用XSSF后依然报错java.lang.OutOfMemoryError: Java heap space或者java.lang.OutOfMemoryError: GC overhead limit exceeded。百度了下,支持大批量数据导出用SXSSF,导出文件名是xlsx,支持导出百万条数据。
我是参考了这一篇博客https://blog.youkuaiyun.com/qq_33620899/article/details/78565384
下面是我自己的做法
controller:
@ResponseBody
@RequestMapping(value = "XXXXXXX")
public ResponseEntity<byte[]> 方法名(String startDate,String endDate,Integer f_factory_id)throws Exception {
Map map = Maps.newHashMap();
if(StringUtils.isNotEmpty(startDate)){
map.put("startDate",startDate);
}
if(StringUtils.isNotEmpty(endDate)){
map.put("endDate",endDate);
}
if(f_factory_id !=null){
map.put("f_factory_id",f_factory_id);
}
String now = DateFormatUtils.format(new Date(),"yyyyMMdd");
HttpHeaders headers = new HttpHeaders();
String downloadFielName = new String(("用户订单统计_"+now+".xlsx").getBytes("UTF-8"),"iso-8859-1");
headers.setContentDispositionFormData("attachment", downloadFielName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity(statisticsSe
支持海量数据导出的EXCEL解决方案

在处理大量数据导出到Excel时,原始使用HSSF的方式因限制导致报错。改用XSSF后仍遇到内存溢出问题。通过采用SXSSF,支持xlsx格式,能有效处理百万级数据导出,避免内存问题。参考了https://blog.youkuaiyun.com/qq_33620899/article/details/78565384,实际操作中,9万多条数据能在20多秒内完成导出。
最低0.47元/天 解锁文章
808





