Вы получаете ошибку нехватки памяти, потому что POI читает, анализирует и создает целую структуру данных для всего вашего файла Excel в памяти. Это может занять большое количество памяти. Я вижу, что ваша программа читает с одного листа. Это говорит мне, что вы можете экспортировать этот лист в файл .csv (значение, разделенное запятыми). Тогда было бы легко прочитать данные.
Я недостаточно знаю о вашем бизнес-процессе, чтобы понять, где можно выполнить экспорт в .csv или возможно ли это в вашем процессе. POI известен тем, что использует большой объем памяти.
Другим решением будет чтение непосредственно из файла Excel. Файл .xlsx на самом деле является zip. Вы можете открыть его и прочитать ваши данные оттуда. Чтобы понять формат zip-файла .xslx, вам нужно обратиться к документации SpreadsheetML или использовать Open XML SDK , который, как и POI, будет использовать память, но, вероятно, не так много.