Excel导入导出(一)之百万级数据导入

前言

总结一下该方案的主要原理:超大数据量的excel文件通过页面上传后(nginx的默认最大文件字节要调大一些:client_max_body_size  xxxm),后台接收到该文件的对象CommonsMultipartFile。首先获取该文件对象的inputStream,然后用OPCPackage来打开该文件流,将excel在内存中转化为xml格式却不会出现内存溢出的问题,根据该xml的标签就可以识别是格式,标题还是内容。然后在内存中通过POI框架中的XSSFSheetXMLHandler类中的sheetContentsHandler接口来根据上述的标签来解析内容。可以将解析到的内容存入list或者map容器中便于后续的业务处理(纯内容数据,几百万的数据量轻松胜任,亲测不会内存溢出)。当然根据业务需要,需要复写sheetContentsHandler接口的startRow,endRow,cell,headerFooter四大方法

㈠如果是dubbo微服务,由于服务之间最大数据限制在8M内,超过就无法在服务之间传递。

dubbo.protocol.dubbo.payload=11557050(默认为8M,即8388608)

默认为8M,思路是可以使用先将excel上传到文件服务器,生成一个url,再传到另一个服务进行下载,读取。

㈡如果是其他微服务,如nacos、kafka就可以直接调用service服务层,读取。

普通的excel读取仍然会出现内存溢出, 本文的读取方法是用pio的OPCPackage来打开该文件流,到内存中&#x

你可能感兴趣的:(excel,java,excel,dubbo,apache)