Поиск в файле 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 (используя обратные вызовы для максимальной производительности и наименьшего потребления памяти).
Надеюсь, что это поможет.