Leitura de arquivo xls utilizando POI, problemas com filtros do excell

Ola pessoal, estou lendo um arquivo xls, mas no momento que existe um filtro no arquivo excell, minha leitura não funciona, da este erro no log:


org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance, the following exception occured: null
	at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:237)
	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:130)
	at org.apache.jsp.reqs_005fajax.leArquivo_jsp._jspService(org.apache.jsp.reqs_005fajax.leArquivo_jsp:72)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Unknown Source)

Aqui é o trecho do código aonde leio o arquivo:

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(caminho));
            HSSFWorkbook    wb = new HSSFWorkbook(fs);

            //HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(caminho));
            HSSFSheet sheet = wb.getSheetAt(0);

            out.println("Leitura de arquivo xls e transferência dos dados para combo.<br><br>");
            out.println("Localização do arquivo: "+caminho+"<br><br>");
            int numPrimeiraLinha = sheet.getFirstRowNum();
            int numUltimaLinha   = sheet.getLastRowNum();
            out.println("<br>Número da primeira linha: " + (numPrimeiraLinha) + "<br>");
            out.println("<br>Número da ultima linha: " + numUltimaLinha + "<br><br>");

            Iterator rows = sheet.rowIterator();
            java.awt.List     GAs = new java.awt.List();

            while( rows.hasNext() ) {
                HSSFRow row = (HSSFRow) rows.next();
                out.println( "Linha: " + row.getRowNum()  );

                HSSFCell celula = row.getCell((short)0);


                switch ( celula.getCellType() ) {

                        case HSSFCell.CELL_TYPE_NUMERIC:
                            out.println( celula.getNumericCellValue() + "<br>");
                            GAs.add(String.valueOf(celula.getNumericCellValue()));
                            break;

                        case HSSFCell.CELL_TYPE_STRING:
                            out.println( celula.getStringCellValue() + "<br>");
                            break;

                        default:
                            out.println( "unsuported sell type" + "<br>");
                            break;
                }

            }

            /////////////////////////////////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////////////////////////////////////////////
            int qtde = GAs.getItemCount();

            out.println("<select>");

               out.println("<option value=''></option>");

               for (int i = 0; i < qtde;i++){
                   out.println("<option value='"+GAs.getItem(i)+"'>" +GAs.getItem(i)+ "</option>");
               }

            out.println("</select>");

O proble ocorre quando existe filtro no arquivo, sem filtro a leitura é normal, funciona.
Estou usando a poi-2.5.1-final-20040804.jar , se alguem tiver uma dica. Até mais…