POI3.8 導出大數據excel(50萬左右)

POI以前的版本不支持大數據量處理,若是數據過多則常常報OOM錯誤,有時候調整JVM大小效果也不是太好。3.8版本的POI新出來了SXSSFWorkbook,能夠支持大數據量的操做,只是SXSSFWorkbook只支持.xlsx格式,不支持.xls格式。html

    3.8版本的POI對excel的導出操做,通常只使用HSSFWorkbook以及SXSSFWorkbook,HSSFWorkbook用來處理較少的數據量,SXSSFWorkbook用來處理大數據量以及超大數據量的導出。apache

    HSSFWorkbook的使用方法和以前的版本的使用方法一致,這裏就不在陳述使用方法了xss

    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
相關文章
相關標籤/搜索