【问题标题】:Struts2 JasperReport plugin exporting to XLS with several SheetsStruts2 JasperReport 插件使用多个表格导出到 XLS
【发布时间】:2013-01-09 10:33:25
【问题描述】:

我正在使用 struts2 jasperreports 插件,它运行良好。问题是我想传递 exportParameters 而我不知道如何通过插件来做到这一点。我做到了:

@Result(
   name = "XLS", value = "/<package>/Informe.jasper", 
   type = JasperReportsResult.class, 
   params = {
      "dataSource", "listaResultados", 
      "format", "XLS",      
      "contentDisposition", "attachment;filename=\"Informe.xls\"", 
      "exportParameters", "exportParametersJR" 
   }
)

@SuppressWarnings("unchecked")
    public Map<String, String> getExportParametersJR(){
        JRXlsExporter jrXlsExporter = new JRXlsExporter();
        JrXlsExporter.setParameter(
               JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.TRUE);
        return jrXlsExporter.getParameters();       
    }

我试过了,我得到了正确的数据源,但是当我添加这一行时

"exportParameters", "exportParametersJR"

它显示了这个异常:

java.lang.NullPointerException 在 org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:229) 在 org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178) 在 com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253) 在 org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) 在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) 在 org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) 在 org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 在 org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 在 org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 在 java.lang.Thread.run(Unknown Source)

谁能帮帮我?

【问题讨论】:

标签: jakarta-ee web struts2 jasper-reports xls


【解决方案1】:

感谢Andrea Ligios评论的帖子(passing parameters to jaspereport),我看到我的项目使用的是不支持此功能的旧版本。

项目使用struts2-jasperreports-plugin-2.0.11.1.jar,所以解决方法是使用iReport 3来定义属性,这样:

  1. 添加 net.sf.jasperreports.export.xls.* 导入(编辑/报告导入指令/新导入)

  2. 在报表自定义属性中添加 net.sf.jasperreports.export.xls.one.page.per.sheet 属性并将 ir 设置为 true(编辑/自定义属性/新建)

  3. 保存
  4. 编译
  5. 将 .jasper 文件替换到项目中

通过这种方式,我得到了项目按我想要的方式运行。

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多