您的位置:首页 > 编程语言 > Java开发

java操作Excel效率之poi与fastexcel比较(转载)

2015-10-05 12:44 585 查看
于:http://blog.163.com/aaron_chan_520/blog/static/27852686201042485458338/

自己做了个小测试 

POI代码如下

       public void testPoiExcel(String strPath) throws Exception {

  HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(strPath));

  HSSFSheet sheet = wb.getSheetAt(0);

  HSSFRow row;

  HSSFCell cell;

  for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum(); i++) {

   row = sheet.getRow(i);

   for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {

    cell = row.getCell((short) j);

   }

  }

 }

fastExcel代码如下

 public void testFastExcel(String strPath) throws Exception {

  

  Workbook workBook = FastExcel.createReadableWorkbook(new File(strPath));

  workBook.open();

  Sheet s = workBook.getSheet(0);

  

  String[] row;

  String cell;

  

  for (int i = s.getFirstRow(); i <= s.getLastRow(); i++) {

   row = s.getRow(i);

   for (int j = s.getFirstColumn(); j <= s.getLastColumn(); j++) {

    cell = s.getCell(i, j);

   }

  }

  

  workBook.close();

 }

Excel一行数据如下 【AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA 



测试结果如下 

POI         2272条     5782毫秒 

FastExcel   2272条     828毫秒 

在我的机器上设置的jvm内存 poi只能跑2272条数据,再多就内存溢出了。 

FastExcel做到48000条还没溢出时间是14093毫秒

为什么这么大区别 我自己感觉是 POI用的是大对象HSSFRow,HSSFCell而Fastexcel是String[]和String 

毕竟在集合中数组是占用空间最小的

但是这样的话 fastexcel不能操作Excel的样式了 ,如果是做简单的Excel导入导出首选FastExcel

本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a> 原文链接:http://www.soidc.net/discuss/1/090115/00/627795_1.html

另:关于java读写excel不同方案效率的讨论http://bbs.csdn.net/topics/390107430/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: