I don't see much wrong with your current code, however on the apache website it says that SXSSF leaves temporary files on your computer, and that you must call dispose as below:
Note that SXSSF allocates temporary files that you must always clean up explicitly, by calling the dispose method.
SXSSFWorkbook wb = new SXSSFWorkbook(100);
// dispose of temporary files backing this workbook on disk
wb.dispose();
I would recommend performing the dispose as it seems to prevent leftover information being stored. On whether it is the right approach, I would suggest taking a test file and giving it a couple of goes, how well this code executes will will be affected by your system (cpu power, memory e.t.c) and the size of the documents you are processing.
Good Luck!