下面是結構圖
在專案中遇到二十萬行資料要寫入到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...