升级到Apache POI 3.9后导出Excel工作表时出错

时间:2013-05-23 14:24:13

标签: apache fonts apache-poi export-to-excel

我们正在对我们的应用程序进行更改,以便将文件扩展名从xls转换为xlsx格式(2007及更高版本),同时从应用程序导出文件。

我已经通过升级到POI 3.9 jar添加了HSSF的XSSF intead来进行必要的代码更改。我们使用的以前版本的Jar文件是POI 3.0。

我在Library文件夹中添加了以下jar:

poi-3.9-20121203
poi-examples-3.9-20121203
poi-excelant-3.9-20121203
poi-ooxml-3.9-20121203
poi-ooxml-schemas-3.9-20121203
poi-scratchpad-3.9-20121203
commons-codec-1.5
commons-logging-1.1
junit-3.8.1
dom4j-1.6.1
stax-api-1.0.1
xmlbeans-2.3.0

升级Jar文件后,当我尝试在应用程序中导出文件时,我得到的页面无法显示错误。当我点击Excel图标时,下面是控制台中的例外:

com.sun.faces.lifecycle.InvokeApplicationPhase execute #{customerFinancialReportAction.createReport}: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org.apache.poi.ss.usermodel.Font
                                 javax.faces.FacesException: #{customerFinancialReportAction.createReport}: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org.apache.poi.ss.usermodel.Font
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:79)
    at javax.faces.component.UICommand.broadcast(UICommand.java:312)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:298)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:412)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:220)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:91)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966)

我们不确定这里导致问题的原因。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

    Font font = workBook.createFont();
    font.setFontName(XSSFFont.DEFAULT_FONT_NAME);//Is this way you are creating font
    font.setFontHeightInPoints((short)10);
    return font;