2015-11-03 36 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的問題!