关于springboot+SpringMVC使用poi导出文件问题

因为数据量比较庞大,所以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();
                }
            }
        }

老规矩写的不清晰的地方,可以指出,我会不定时更新和修改。一起加油.

所有的伟大,都来自于一个勇敢的开始。

猜你喜欢

转载自blog.csdn.net/dubismile/article/details/88422719