1.治标不治本的方法
延长nginx的 超时时间,只能对几十万 的有用 有瓶颈,但是解决问题比较迅速。
2.分批响应流
把数据分批 写到本地excel,保存为文件。(会有多个)然后通过流读取,然后通过response获取响应流 进行响应, 前端要处理分批流。
这样可以避免1min 的超时时间 服务器端没有响应 断开连接的问题。 解决也比较简单 但是前端需要处理。
数据量比较大的话 会一直响应,一直处理中,用户不知道 等待时间。
3.异步处理,开启线程 生成zip压缩文件
后端处理 10w为一个excel 把所有excel 压缩成zip, 然后将 file 转成 multipart,
上传到文件服务器,返回一个下载链接, 用户通过链接 直接进行下载。
处理较为复杂,但是可以应对较大数据量!!!(可生成成功后 推送给用户去下载)
问题: 需要处理 用户等待时间的问题。
1.基本导出
利用poi/easyExcel
poi:3.17版本
通过HttpServletResponse 的响应流将 工作空间Workbook 响应出去
EasyExcel:
1.1.2-beta5版本
out为输出流:
ExcelWriter writer =new ExcelWriter(out, ExcelTypeEnum.XLSX);
Sheet sheet =new Sheet(1, 1, DTO.class);
writer.write(数据集合, sheet);
@ExcelProperty(value ="列名称",index =0)
实体属性添加注解