Problema ao exportar dados em xls usando dataExporter

3 respostas
J

Pessoal,

Estou tentando usar o dataExporter do Primefaces para exportar os dados da tela em um arquivo xls, mas não estou conseguindo. Em PDF eu consigo, mas quando tento em xls acontece o seguinte erro:

]
exception

javax.servlet.ServletException: Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbook

javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.IncompatibleClassChangeError: Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbook

org.primefaces.component.export.ExcelExporter.export(ExcelExporter.java:43)

org.primefaces.component.export.DataExporter.processAction(DataExporter.java:102)

javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)

javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)

javax.faces.component.UICommand.broadcast(UICommand.java:300)

javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)

javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)

com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

</blockquote>

Já adicionei às minhas bibliotecas o jar do POI, tentei com a versão 3.2, 3.7 e agora com a 3.8 e com todas as versões obtive o mesmo erro. O que será que pode ser?

Utilizo o dataExporter assim:

<h:commandLink value="PDF">                          
                        <p:dataExporter type="pdf" target="usuarios" fileName="usuarios"
                                        encoding="ISO-8859-1" excludeColumns="4"/>  
                    </h:commandLink> 
                    |
                    <h:commandLink value="XLS">                          
                        <p:dataExporter type="xls" target="usuarios" fileName="usuarios"/>  
                    </h:commandLink>

3 Respostas

J

Pessoal,

Já adicionei o POI 3.2, 3.7 e o 3.8 e mesmo assim os erros continuam.

Agora o erro é esse:

javax.servlet.ServletException: org/apache/poi/ss/usermodel/RichTextString

E não acho nada na internet falando sobre esse erro. O que faço? É só adicionar o jar do POI nas bibliotecas mesmo?

J

Adicionei, além do poi3.8, esses dois jars e FUNCIONOU:

poi-ooxml-3.8-20120326
poi-ooxml-schemas-3.8-20120326

D

Olá JeffersonJCosta!

Estou com o mesmo problema, você somente adicionou estes 2 arquivos? Chegou a excluir o poi.jar?

Abs,
Deb

Criado 8 de maio de 2012
Ultima resposta 9 de nov. de 2012
Respostas 3
Participantes 2