要导入到excel表的数据有20多w条,所以采用了分页导入,每一千行追加数据一次,但是当追加到1.3w条数据时候就不往下走了,代码如下:
- Java code
FileOutputStream out=new FileOutputStream(path+fileName_exp,true); //File wbook = new File(path+fileName_exp); WritableWorkbook book = Workbook.createWorkbook(out); WritableSheet sheet = book.createSheet("移动电话号段表数据", 0); Label label = new Label(0, 0, "号段ID"); sheet.addCell(label); label = new Label(1, 0, "号段低位"); sheet.addCell(label); label = new Label(2, 0, "号段高位"); sheet.addCell(label); label = new Label(3, 0, "号段归属地区号"); sheet.addCell(label); label = new Label(4, 0, "运营商"); sheet.addCell(label); label = new Label(5, 0, "生效时间"); sheet.addCell(label); label = new Label(6, 0, "失效时间"); sheet.addCell(label);[color=#FF0000]for (int i=1000,j=1;i<count;j++) { fileName = importSheet(hashSet.iterator(),fileName_exp,path,book,sheet,out,i*(j-1)+1); Workbook newWorkBook = Workbook.getWorkbook(new File(path+fileName_exp)); book = Workbook.createWorkbook(new File(path+fileName_exp), newWorkBook); sheet = book.getSheet("移动电话号段表数据"); }[/color]//写入到excel中的函数public String importSheet(Iterator it,String fileName,String path,WritableWorkbook book,WritableSheet sheet,FileOutputStream out,int i) throws Exception{ //filename是生成文件的路径及用户名;it是内容, Iterator it; try { int row = i; for (; it.hasNext(); ) { OcsProdCellMsisdn vo = (OcsProdCellMsisdn) it.next(); Label xm = new Label(0, row, vo.getMsisdnId()); sheet.addCell(xm); Label username = new Label(1, row, vo.getMsisdnFirst()); sheet.addCell(username); Label pwd = new Label(2, row, vo.getMsisdnLast()); sheet.addCell(pwd); pwd = new Label(3, row, vo.getAreaCode()); sheet.addCell(pwd); pwd = new Label(4, row, vo.getOperatorCode()); sheet.addCell(pwd); pwd = new Label(5, row, vo.getEffDate()); sheet.addCell(pwd); pwd = new Label(6, row, vo.getExpDate()); sheet.addCell(pwd); row++; } book.write(); book.close(); out.flush(); //out.close(); } catch (Exception e) { e.printStackTrace(); } return fileName; }
------解决方案--------------------
解决了吗。关注中
------解决方案--------------------
参考http://juluren.freevar.com/blog/