因为数据量比较庞大,所以POI我们使用的XSSFWorkBook版本,专门用来处理大数据的。
直接进入正题,最近下载的时候发现服务器总会抛出一个异常
org.apache.catalina.connector.ClientAbortException: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
然后老规矩先查询了一下问题,发现网上有人说是超时的问题,默默把连接超时改成了30m,然后再试了一下,发现还是会有这个问题,按理来说不应该出现这种事情的,然后进入逐步调试,最终,发现问题出在了
wb.write(response.getOutputStream());
这句话再写入的时候,会抛出异常,起先以为是head头问题,于是走上了一条坑中坑的路。具体由什么问题引起的,不确定,最终修改了关于response部分属性后,就可以了,在此分享一下
SXSSFWorkbook wb = null;
OutputStream os = null;
try {
wb = ExcelExport.exportOrder(selfOrderExEntities);
// response.reset(); // 非常重要
os = response.getOutputStream();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=orderList.xls");//默认Excel名称
response.flushBuffer();
wb.write(os);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != os) {
try {
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != wb) {
try {
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
老规矩写的不清晰的地方,可以指出,我会不定时更新和修改。一起加油.
所有的伟大,都来自于一个勇敢的开始。