1. 程式人生 > >POI操作Excel的三種Workbook的發展和區別

POI操作Excel的三種Workbook的發展和區別

POI的一些使用方法:
  建立流程:(上級為下級的載體)
    1、建立Workbook(工作薄);
    2、建立Sheet(表單,可以建立多個);
    3、建立Row(行);
    4、建立Cell(單元格)


接下來分別說下工作簿的常用三種形式的區別,他們分別是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWorkbook
  第一種:HSSFWorkbook
    針對是 EXCEL2003 版本,副檔名為 .xls;所以此種的侷限就是匯出的行數至多為 65535 行,
    此種因為行數不足七萬行所以一般不會發生記憶體不足的情況(OOM);

  第二種:XSSFWorkbook
    這種形式的出現是由於第一種HSSFWorkbook的侷限性而產生的,因為其所匯出的行數比較少,所以XSSFWookbook應運而生,其對應的是EXCEL2007+(1048576行,16384列)副檔名.xlsx,最多可以匯出104萬行,不過這樣就伴隨著一個問題---OOM 記憶體溢位,原因是你所建立的book、sheet、row、cell等此時是存在記憶體的並沒有持久化,那麼隨著資料量增大,記憶體的需求量也就增大,那麼很大可能就是要OOM了,那麼怎麼解決呢?

  第三種:SXSSFWorkbook  poi.jar 3.8+
    第二種遇到的問題該如何解決呢?因為資料量過大導致記憶體吃不消那麼可以讓記憶體到量持久化嗎? 答案是肯定的,此種的情況就是設定最大記憶體條數,比如,設定最大記憶體量為5000 rows  --new SXSSFWookbook(5000),此時當行數達到5000時,把記憶體持久化寫到檔案中,以此逐步寫入 避免OOM,那麼這樣就完美解決了大資料下匯出的問題;

  詳情參考:https://blog.csdn.net/qq_29631809/article/details/72785338;