三種workbook分別是HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook
第一種:HSSFWorkbook
針對EXCEL 2003版本,擴展名為.xls,此種的局限就是導出的行數最多為65535行。因為導出行數受限,不足7萬行,所以一般不會發送內存溢出(OOM)的情況
第二種:XSSFWorkbook
這種形式的出現是由於第一種HSSF的局限性產生的,因為其導出行數較少,XSSFWorkbook應運而生,其對應的是EXCEL2007+ ,擴展名為.xlsx ,最多可以導出104萬行,不過這樣就伴隨着一個問題–OOM內存溢出。因為使用XSSFWorkbook創建的book sheet row cell 等是存在內存中的,並沒有持久化到磁盤上,那么隨着數據量的增大,內存的需求量也就增大。那么很有可能出現 OOM了,那么怎么解決呢?
第三種:SXSSFWorkbook poi.jar 3.8+
SXSSFWorkbook可以根據行數將內存中的數據持久化寫到文件中。
此種的情況就是設置最大內存條數,比如設置最大內存量為5000行, new SXSSFWookbook(5000),當行數達到 5000 時,把內存持久化寫到文件中,以此逐步寫入,避免OOM。這樣就完美解決了大數據下導出的問題
學習POI移步至https://www.yiibai.com/apache_poi/apache_poi_core_classes.html
參考地址
https://blog.csdn.net/qq_29631809/article/details/72785338
