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…