天天看點

Java寫入檔案寫入百萬記錄_java POI 寫入百萬資料到 excel

.xls檔案隻支援6w+的資料寫入

.xlsx檔案隻支援104w+資料的寫入

在java中jxl工具類隻能操作.xls的檔案,不能操作.xlsx的檔案

POI工具類能夠支援.xlsx的檔案操作。

excel的資料讀寫都相應的簡單,網上也有很多的代碼,我這裡要說的是怎麼樣寫入100w+的資料到Excel中。

在POI中,XSSFWorkbook  wb = new XSSFWorkbook ();建立的工作簿能夠寫入大量的資料,但很大的可能下會虛拟機記憶體不夠而報錯

在這種情況下有兩種解決方案:

1.重新配置設定java 虛拟機記憶體(我沒有試驗)

2.POI中還提供了SXSSFWorkbook swb=new SXSSFWorkbook(wb,10000);代碼的建立工作,第一個參數是XSSFWorkbook  wb = new XSSFWorkbook ();第二個參數是記憶體中處理的資料行數,當資料量超過你所設定的數量,會把多的資料儲存到磁盤上。

這裡提供一個簡單寫入excel檔案的代碼段:

public static void createWorkBook(List dataList,String filename) throws IOException {

System.out.println("資料數量=="+dataList.size());

//建立excel工作簿

XSSFWorkbook wb = new XSSFWorkbook ();

SXSSFWorkbook swb=new SXSSFWorkbook(wb,10000);

//swb.createSheet()

//建立第一個sheet(頁),命名為 new sheet

SXSSFSheet sheet = null;

sheet = (SXSSFSheet) swb.createSheet("myData");

//Row 行

//Cell 方格

// Row 和 Cell 都是從0開始計數的

for(int i=0;i

{

Entity en=dataList.get(i);

// 建立一行,在頁sheet上

Row row = sheet.createRow(i);

// 在row行上建立一個方格

//System.out.println(en.getPkg_name());

//row.createCell(0).setCellValue("xx");

row.createCell(0).setCellValue(en.getDate());

// Or do it on one line.

row.createCell(1).setCellValue(en.getxxx());

row.createCell(2).setCellValue(en.getxxx()());

row.createCell(3).setCellValue(en.getxxx()());

row.createCell(4).setCellValue(en.getxxx()());

......

}

//建立一個檔案 命名為workbook.xls

FileOutputStream fileOut = new FileOutputStream(filename);

// 把上面建立的工作簿輸出到檔案中

swb.write(fileOut);

//關閉輸出流

fileOut.close();

System.out.println("寫入完成----");

}