2015-11-03 35 views
1

我想从Spring框架中的Web应用程序导出一个excel文件。 首先,我以XLS格式完成了该工作。 现在,我正在尝试在XLSX格式中执行相同的操作。为此,我将HSSFWorkbook等一些类更改为XSSFWorkbook,或将HSSFSheet更改为XSSFSheet。java.lang.NoClassDefFoundError:org/apache/poi/ss/usermodel/ExtendedColor

的问题是在第三行此源:

XSSFCellStyle estiloFecha = workbook.createCellStyle(); 
    estiloFecha.cloneStyleFrom(estiloNormal); 
    estiloFecha.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("dd/MM/yyyy hh:mm")); 

的错误是:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/ExtendedColor 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:859) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:754) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:399) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:354) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 
net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:185) 
net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:159) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264) 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:193) 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) 
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148) 
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) 

一些帮助?

+1

看起来你有错配的罐子。你有没有[尝试按照Apache POI常见问题解答条目上的说明几乎是这个确切的主题](http://poi.apache.org/faq.html#faq-N10006)? – Gagravarr

+0

感谢@Gagravarr,我按照说明操作,现在就工作! – waridc

回答

0

将答案提升为答案 - 您的POI罐子不匹配。 Apache POI有几个不同的罐子,涵盖了different project components。正如POI FAQ, these must all be from the same version中所解释的那样!不支持在版本之间混合使用罐子,并且失败时会出现如下错误

快速修复 - 删除所有的Apache POI jar,只添加最新版本的jar。

如果您无法弄清楚您实际使用了哪些罐子,请通过类加载器通过use the code given in this FAQ entry报告使用哪些罐子。然后,删除旧的,所以你最终只能得到一个版本的一套POI罐子。

然后,考虑使用诸如Apache Maven或Apache Ant或Groovy的Gradle之类的东西来处理您的构建过程和依赖关系。那些负责让你保持一致的集合,避免你在类路径中抛出随机不兼容jar的问题!