This week's book giveaway is in the Reactive Progamming forum. We're giving away four copies of Reactive Streams in Java: Concurrency with RxJava, Reactor, and Akka Streams and have Adam Davis on-line! See this thread for details.
How much memory have you allocated to the JVM? POI is known to use lots of memory; try upping it substantially.
Also, having separate code for handling XLS and XLSX is unnecessarily complicated. Use the classes in the org.apache.poi.ss package instead which can handle both varieties.
I also question a design that uses Excel files with 100.000 rows - no human being should be subjected to such files, and if the file is not touched by humans, then XLS/XLSX is not the best way to store the data.
When you have exhausted all possibilities, remember this: you haven't - Edison. Tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop