Как читать первые n строк файла HUGE excel

Поэтому я пытаюсь написать программу, которая сканирует определенный шаблон в строке файла excel. А именно для N, за которым следует любая буква, то S или T (каждая буква, занимающая одну ячейку).

Проблема в том, что файл excel, который я использую, абсолютно массивный, с примерно 3000 строк и почти 1000 столбцов. Я пытаюсь найти этот шаблон только в первых 60 строках, чтобы уменьшить пространство кучи java. Как я могу подобрать свой алгоритм для этого? Я все еще получаю исключения из памяти.

Мой код выглядит следующим образом:

import java.awt.List; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelReader { public int Reader(File file) throws IOException, EncryptedDocumentException, InvalidFormatException { FileInputStream fis = new FileInputStream(file); String filepath = file.getPath(); Workbook wb = WorkbookFactory.create(new File(filepath)); XSSFSheet sheet = (XSSFSheet) wb.getSheetAt(0); XSSFRow row; XSSFCell cell; ArrayList<Integer> list = new ArrayList<Integer>(); int rows; int cols = 0; int temp = 0; rows = sheet.getPhysicalNumberOfRows(); for (int i = 0; i < 10 || i < 60; i++) { row = sheet.getRow(i); if (row != null) { temp = sheet.getRow(i).getPhysicalNumberOfCells(); if (temp > cols) cols = temp; } } for (int r = 0; r <= 60; r++) { row = sheet.getRow(r); if (row != null) { for (int c = 0; c <= cols; c++) { int numblanks = 0; cell = row.getCell((short) c); if (cell != null) { //System.out.print(cell + "\t\t"); } else { //System.out.print("\t\t"); } if (cell != null && cell.getCellType() == XSSFCell.CELL_TYPE_STRING) { if ("N".equals(cell.getStringCellValue())) { for (int k = c; k <= cols; k++) { if ("-".equals(row.getCell(k).getStringCellValue())) { numblanks++; continue; } if ("S".equals(row.getCell(c + 2 + numblanks).getStringCellValue()) || "T".equals(row.getCell(c + 2 + numblanks).getStringCellValue())) { list.add((int) sheet.getRow(1).getCell(c).getNumericCellValue()); break; } } } } } System.out.println(); } } System.out.println(); System.out.println("Rows: " + rows); System.out.println("Columns: " + cols); System.out.println(list); return temp; } } 

  • Отображение листа Excel на веб-странице с использованием JSP / Servlets?
  • Импорт файла .csv или .xlsx в базу данных mysql с использованием Java?
  • Формула Excel для сравнения двух столбцов
  • Как создать сопоставление xml или json из файла xls, а затем сгенерировать html-таблицу (структуру) из этого сопоставления?
  • Как читать файл Excel большого размера после загрузки
  • Selenium Webdriver - Java - Как сохранить значение, прочитанное из excel во временной переменной
  • В чем разница между методами getRichStringCellValue () и getStringCellValue () класса POI HSSFCell?
  • Apache POI Оценить формулу в книге SXSSF
  • Как написать данные в нескольких ячейках в Excel с помощью java?
  • Установите критерии фильтра в файле .xls excel с использованием флага HSSF POI и без использования какого-либо цикла
  • Запись в CSV с форматированием Excel: Java
  • Interesting Posts

    Чтение с использованием XSSF SAX и передача данных с помощью SXSSF – POI

    Добавьте .NET EXE в качестве ссылки VBA (в Excel) для COM Interop

    Вставить изображение в комментарий макроса в Mac Excel 2016

    VBA Userform Single Sheet Связанные записи инвентаря

    Шаблоны Word / Excel, которые могут захватывать информацию из базы данных

    Как удалить пробел и символы в столбце

    Замена Apache POI Jars на последнюю версию

    Копирование данных из столбца всех рабочих листов в файле Excel и вставка его в один лист

    Повторите диапазон значений, начинающихся с значения параметра, без использования vba

    Надстройка Office с правами пользователя

    Получить путь, имя файла, лист и адрес определенного имени в закрытой книге

    Результаты поиска в стареющих ковших в SQL Server 2014

    Переменная фильтра не принимается

    Excel – если время между двумя ячейками

    Скопировать конкретные ячейки из листа2 в следующую пустую строку

    Давайте будем гением компьютера.