6
异常代码
@RequestMapping("export")
public void export(HttpServletResponse response) {
// 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = null;
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = null;
for (int page = 1; page <= 500; page++) {
req.setPage(page);
req.setPageSize(200);
Result<XxxVO> exportResult = xxxx.get();//rpc调用
if (!exportResult.isSuccess()) {
ResultVO resultVO = ResultVO.returnFailed(exportResult.getMsg());
ResponseHelper.toJSONResponse(response, resultVO);
return;
}
XxxVO xxxVO = exportResult.getResult();
if (xxxVO == null || CollectionUtils.isEmpty(xxxVO.getList())) {
log.info("xxxxVoList is empty,page:" + page);
break;
}
String fileName = xxxVO.getFileName();
String sheetName = xxxVO.getSheetName();
List<List<String>> head = xxxVO.getHead();
if (page == 1) {
ExcelHelper.responseAttachFile(response, fileName);
// 这里 需要指定写用哪个class去写
excelWriter = EasyExcel.write(response.getOutputStream()).build();
// 这里注意 如果同一个sheet只要创建一次
writeSheet = EasyExcel.writerSheet(sheetName).head(head).build();
}
excelWriter.write(xxxVO.getVOList(), writeSheet);
response.getOutputStream().flush();
}
/// 千万别忘记finish 会帮忙关闭流
if(excelWriter != null) {
excelWriter.finish();
}
}
异常提示
建议描述 这块当数据量较大时候,nginx会拦截导致响应超时,前端返回504 想问的是如何写能够每页数据查询出来之后写入outstream,直接输出到浏览器端 这样不断写入,不断滚动导出。就不会超时了.