123
返回列表 发新帖
楼主: tencher

[原创] POI 导出excel到本地 ,OutOfMemoryError老问题

[复制链接]
论坛徽章:
0
21#
发表于 2008-8-11 17:06 | 只看该作者


[ 本帖最后由 dracularking 于 2008-8-11 17:07 编辑 ]

使用道具 举报

回复
论坛徽章:
0
22#
发表于 2008-8-11 17:07 | 只看该作者
原帖由 iooyoo 于 2007-1-24 10:29 发表
和excel文件有关,不仅仅是文件大小,也遇到过这种问题,有些文件装在时报这个错,把xls文件中内容贴到一个新的xls文件中再用poi装载可以

顶个,我就纳闷,测试下来n-1条可以 n条就出错了

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
23#
发表于 2008-8-12 11:51 | 只看该作者
原帖由 tencher 于 2007-1-25 11:43 发表
File f = new File("c:/workbook.xls");
WritableWorkbook  wb = Workbook.createWorkbook(f);
WritableSheet sheet = wb.createSheet("test, 0);

rs = "select * from table";//5w records
while(rs.next()) {
    for (int j = 0; j < 32; j++) {
            sheet.addCell(new Label(j,rowNum,rs.getString(j + 1)));
    }
    System.out.println(rowNum);
    rowNum++;
    if (rowNum % 2000 == 0)
    {
            wb.write();
    }      
}

wb.write();                     
wb.close();

----------------------------------------------------------------------------------
提醒一下楼主,在下用POI用的很好,我用的poi做的报表目前的大小有80M,也没有内存溢出。
如果数据很小的情况出现内存溢出的肯定是你的程序写的有问题。

参考一下读取顺序;
HSSFWorkbook workbook=new HSSFWorkbook();  //第一创建工作本
workbook.setSheetName(i,hashmap1.get("project").toString(),HSSFWorkbook.ENCODING_UTF_16);//第二创建sheet

while(rs.next()){  
HSSFRow row = sheet.createRow((short)   i); //i是行数
    HSSFCell cell=row.createCell((short) (column));  // 创建cell单元格
     /****
     把对应的数值写入相应的单元格
     比如:customer=rs.getString(column);
              cell.setCellValue(customer.telephone);
    *****/
}
workbook.write(os);
os.close();
------------------------------------------------

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表