java POI 写入百万数据到 excel
.xls文件只支持6w+的數(shù)據(jù)寫(xiě)入
.xlsx文件只支持104w+數(shù)據(jù)的寫(xiě)入
在java中jxl工具類(lèi)只能操作.xls的文件,不能操作.xlsx的文件
POI工具類(lèi)能夠支持.xlsx的文件操作。
? excel的數(shù)據(jù)讀寫(xiě)都相應(yīng)的簡(jiǎn)單,網(wǎng)上也有很多的代碼,我這里要說(shuō)的是怎么樣寫(xiě)入100w+的數(shù)據(jù)到Excel中。
? ?在POI中,XSSFWorkbook ?wb = new XSSFWorkbook ();創(chuàng)建的工作簿能夠?qū)懭氪罅康臄?shù)據(jù),但很大的可能下會(huì)虛擬機(jī)內(nèi)存不夠而報(bào)錯(cuò)
在這種情況下有兩種解決方案:
? ?1.重新分配java 虛擬機(jī)內(nèi)存(我沒(méi)有試驗(yàn))
? ?2.POI中還提供了SXSSFWorkbook swb=new SXSSFWorkbook(wb,10000);代碼的創(chuàng)建工作,第一個(gè)參數(shù)是XSSFWorkbook ?wb = new XSSFWorkbook ();第二個(gè)參數(shù)是內(nèi)存中處理的數(shù)據(jù)行數(shù),當(dāng)數(shù)據(jù)量超過(guò)你所設(shè)置的數(shù)量,會(huì)把多的數(shù)據(jù)保存到磁盤(pán)上。
這里提供一個(gè)簡(jiǎn)單寫(xiě)入excel文件的代碼段:
? ?
public static void createWorkBook(List<Entity> dataList,String filename) throws IOException { System.out.println("數(shù)據(jù)數(shù)量=="+dataList.size());//創(chuàng)建excel工作簿 XSSFWorkbook wb = new XSSFWorkbook (); SXSSFWorkbook swb=new SXSSFWorkbook(wb,10000);//swb.createSheet()//創(chuàng)建第一個(gè)sheet(頁(yè)),命名為 new sheet SXSSFSheet sheet = null;sheet = (SXSSFSheet) swb.createSheet("myData");//Row 行 //Cell 方格 // Row 和 Cell 都是從0開(kāi)始計(jì)數(shù)的 for(int i=0;i<dataList.size();i++){Entity en=dataList.get(i);// 創(chuàng)建一行,在頁(yè)sheet上 Row row = sheet.createRow(i); // 在row行上創(chuàng)建一個(gè)方格 /*org.apache.poi.ss.usermodel.Cell cell = row.createCell(0); //設(shè)置方格的顯示 cell.setCellValue(1); *///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()()); ......}//創(chuàng)建一個(gè)文件 命名為workbook.xls FileOutputStream fileOut = new FileOutputStream(filename); // 把上面創(chuàng)建的工作簿輸出到文件中 swb.write(fileOut); //關(guān)閉輸出流 fileOut.close(); System.out.println("寫(xiě)入完成----");}
轉(zhuǎn)載于:https://www.cnblogs.com/owner/p/4194276.html
總結(jié)
以上是生活随笔為你收集整理的java POI 写入百万数据到 excel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows和linux删除文件方法
- 下一篇: 网络爬虫依赖的架包