.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("寫入完成----");
}