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.