2013-12-23 28 views
10

我有一个很大的xlsx文件,其中包含大量的数据,我必须实现搜索选项我已经使用Apache POI jar以及jxl jar,以便在行和列之间进行搜索已经制成。但花了大量的时间大数据间来回移动可有一个人帮我,是任何jar文件或其他任何概念可用做搜索速度上的Excel文件...在xlsx和xls文件中使用java搜索

String searchValue="my_value_to_search"; 
    for (int i = 0; i < sheet.getColumns(); i++) { 
     for (int j = 0; j < sheet.getRows(); j++) { 
      value = sheet.getCell(i, j); 
      valueType = value.getType(); 
      String val=getCellType(valueType, value); 
      if (val != null&&val==searchValue) { 
       // To do manipulation. 
      } 
     } 
    } 
+3

我对这样的任务使用多线程一次。我的主线程解析了xlsx文件并创建了工作簿,然后生成了其他线程,这些线程一次由主线程提供一些记录。这种方式的性能显着提高 –

回答

6

瓶颈通常是巨量需要一次性在内存中存储大型XLSX文件的内存。 (XLS不能通过设计这么大,这通常不是问题)。要在没有记忆问题一个非常巨大的XLSX文件搜索,你可以这样做:

  • 的XLSX文件事实上是一个ZIP压缩包,你可以打开并阅读的内容,就好像它是一个ZIP文件。
  • 的ZIP里是文件夹“XL /工作表”与文件sheet1.xml(和sheet2.xml等)
  • 你可以使用普通的XmlReader(使用最高性能和最低的内存消耗回调解析这些XML文件)。

希望有帮助。

+0

感谢您的重播。我的另一个问题是什么将是我的大型XLS文件..? – ashokramcse

+2

XLS文件只能是最大65K行,这可以很好地适合内存。不幸的是,我不知道XLSX的类似解决方法。 – geert3

+0

在我的场景中,每张表格都有更多数量的表单,每张表格都填充了所有具有唯一值的单元格,因此解析xls文件也花费了更多时间。 – ashokramcse

相关问题