POI 3.8はビッグデータエクセルを導き出す(50万ぐらい)

3811 ワード

転載先http://blog.csdn.net/yys79/article/details/26443603
POIの前のバージョンは大きなデータ量の処理に対応していません.データが多すぎるとOOMエラーが頻繁に報告されます.JVMサイズを調整する効果もあまり良くない場合があります.3.8バージョンのPOIは新出来SXSSFWorkbookで、大きなデータ量の操作をサポートできます.SXSSFWorkbookだけサポートします.xlsxフォーマットはサポートしません.xlsフォーマットです.
    3.8バージョンのPOIによるエクセルの導出操作は、一般的にHSSFWorkbook及び
SXSSFWorkbook
HSSFWorkbookはより少ないデータ量を処理するために使用されます.
SXSSFWorkbookは、大きなデータ量と大きなデータ量の導出を処理するために使用されます.
      HSSFWorkbookの使用方法は前のバージョンの使用方法と一致しています.ここでは述べられていません.
      SXSSFWorkbookの使用例は以下の通りです.
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 { 
 Workbook wb = new SXSSFWorkbook(100); // keep 100 rows in memory, exceeding rows will be flushed to disk 
 Sheet sh = wb.createSheet(); 
 for(int rownum = 0; rownum < 100000; rownum++){
 Row row = sh.createRow(rownum); 
 for(int cellnum = 0; cellnum < 10; cellnum++){ 
 Cell cell = row.createCell(cellnum); 
 String address = new CellReference(cell).formatAsString(); 
 cell.setCellValue(address); } 
 }
FileOutputStream out = new FileOutputStream("/temp/sxssf.xlsx"); 
 wb.write(out); 
 out.close();
    xml   ,  3.8      。
     :http://blog.sina.com.cn/s/blog_68555ee501015xk2.html
apache        :http://poi.apache.org/spreadsheet/how-to.html#sxssf