POI 解決寫入excel記憶體溢位

2021-07-24 07:26:29 字數 1215 閱讀 1884

下面是結構圖

在專案中遇到二十萬行資料要寫入到excel中時會記憶體溢位,一般方法是調大tomcat的記憶體,但是調到2048m還是會記憶體溢位報錯

poi官網給了一種大批量資料寫入的方法

使用sxxfworkbook 類進行大批量寫入操作解決了這個問題

import junit.framework.assert;

import org.apache.poi.ss.usermodel.cell;

import org.apache.poi.ss.usermodel.row;

import org.apache.poi.ss.usermodel.sheet;

import org.apache.poi.ss.usermodel.workbook;

import org.apache.poi.ss.util.cellreference;

import org.apache.poi.xssf.streaming.sxssfworkbook;

public static void main(string args) throws throwable

}// rows with rownum < 900 are flushed and not accessible

for(int rownum = 0; rownum < 900; rownum++)

// ther last 100 rows are still in memory

for(int rownum = 900; rownum < 1000; rownum++)

fileoutputstream out = new fileoutputstream("/temp/sxssf.xlsx");

wb.write(out);

out.close();

// dispose of temporary files backing this workbook on disk

wb.dispose();

}

通過設定sxxfworkbook的構造引數,可以設定每次在記憶體中保持的行數,當達到這個值的時候,那麼會把這些資料flush到磁碟上,這樣就不會出現記憶體不夠的情況

poi寫入excel出現內容混淆

前幾天做專案時,引用了poi做ecxel讀寫,然後小資料量的時候沒啥問題,但是資料量一大,就出現了有些行,內容合在一起了.如下 xssfrow rowhot sheet.createrow a string value errordata.getdata string msg errordata.g...

解決POI讀取Excel記憶體溢位的問題

poi讀取excel有兩種模式,一種是使用者模式,一種是sax模式,將xlsx格式的文件轉換成cvs格式後再進行處理使用者模式相信大家都很清楚,也是poi常用的方式,使用者模式api介面豐富,我們可以很容易的使用poi的api讀取excel,但使用者模式消耗的記憶體很大,當遇到很多sheet 大資料...

java 基於poi 寫入excel 合併單元格

效果圖如下 提供個人的一些想法,大牛不要看 1 對於要寫入的資料,樹形結構,構建臨時類,巢狀,如下圖 類似即可 public class valueobj else private static void setvaluebyrowandcol int row,int col,string valu...