Поиск в файле xlsx и xls с использованием java

У меня есть большой файл xlsx, который как огромное количество данных, на которых я должен реализовать параметр поиска, я использовал банку Apache POI, а также jxl jar, чтобы был выполнен поиск между строками и столбцом. Но потребовалось огромное время, чтобы пересечь большие данные, может ли кто-нибудь мне помочь, это любые файлы jar или любая другая концепция, доступная для быстрого поиска в файлах Excel...

    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.
            }
        }
    }

Ответ 1

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

  • Файл xlsx на самом деле является ZIP-архивом, вы можете открыть его и прочитать содержимое, как если бы он был ZIP файлом.
  • внутри ZIP находятся папка "xl/worksheets" с файлами sheet1.xml(и sheet2.xml и т.д.).
  • вы можете анализировать эти XML файлы с помощью обычного XmlReader (используя обратные вызовы для максимальной производительности и наименьшего потребления памяти).

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