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

0 respostas
H

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…

Criado 24 de abril de 2006
Respostas 0
Participantes 1