2013-12-23 9 views
10

У меня есть большой файл xlsx, который как огромный объем данных, на которых я должен реализовать параметр поиска. Я использовал банку Apache POI, а также jxl 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 и сделал книгу, затем он породил 5 других потоков, которые подаются основным потоком с количеством записей за раз. таким образом производительность значительно увеличилась –

ответ

6

Узкое, как правило, огромное количество памяти, необходимой для представления больших файлов XLSX в памяти сразу. (XLS не может быть таким большим по дизайну, это обычно не проблема). Для поиска в самом деле огромный XLSX файл без проблем памяти, вы можете сделать это:

  • файл XLSX в действительности ZIP архив, вы можете открыть его и прочитать содержимое, как если бы это ZIP-файл.
  • внутри ZIP является папкой «XL/рабочими листы» с файлами sheet1.xml (и sheet2.xml и так далее)
  • можно разобрать эти XML-файлы с помощью обычного XmlReader (с помощью функции обратного вызова для обеспечения максимальной производительности и минимального потребления памяти).

Надеюсь, что это поможет.

+0

Спасибо за ваш повтор. Мой другой вопрос был в том, что будет для моего большого файла xls ..? – ashokramcse

+2

Файлы XLS могут быть только макс. 65K строк, это может удобно использовать в памяти. К сожалению, подобного подхода я не знаю как с XLSX. – geert3

+0

В моем сценарии у меня больше листов, каждый лист заполняется всеми ячейками с уникальными значениями, поэтому для разбора файлов xls потребовалось больше времени. – ashokramcse

Смежные вопросы