【问题标题】:iReport integration with extjs4.0.2a and Java + Spring + HibernateiReport 与 extjs4.0.2a 和 Java + Spring + Hibernate 集成
【发布时间】:2012-01-19 07:54:10
【问题描述】:

我正在与 Java 一起开发 extjs 4.0.2a。我正在使用一些 java 框架,例如 Hibernate/JPA 和 Spring。现在我想使用 Jasper Report 设计工具,即 iReport 来生成不同格式(.xls、.pdf)等的报告。我熟悉 iReport。我使用 jdbc 连接生成了 .jrxml 和 .jasper 格式的 iReport 文件。

现在我想将生成的报告与 JAVA 集成,这样我就可以获得 .pdf 或 .xls 格式的报告。当我点击 pdf 图标时,我可以下载以 .pdf 格式生成的报告。

我正在使用 Ext js 4.0.2a mvc 架构。任何知道如何进行的人都可以帮助我

【问题讨论】:

标签: java hibernate spring jasper-reports extjs4


【解决方案1】:

我对这个问题的解决方案很简单。当您使用 ExtJs 时,我认为您的控制器在 JavaScript 中。

  1. 请求 Java 服务器以 pdf、xls 等格式创建报告
  2. 使用密钥在会话中保存报告(可以是以毫秒为单位的时间)
  3. 返回视图的密钥并打开一个新窗口以向服务器请求您的报告

新窗口应该包含一个类似http://localhost:8080/myApplication/report?key=312312313的URL

如果你想下载到 xsl 你可以试试这个:

private void exportToExcel(HttpServletResponse resp, JasperPrint jasperPrint) throws IOException {
    String reportfilename = tagreport("file") + "repor.xls";
    JExcelApiExporter exporterXLS = new JExcelApiExporter();

    exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT,jasperPrint);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE,Boolean.TRUE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, resp.getOutputStream());
    resp.setHeader("Content-Disposition", "inline;filename="+ reportfilename);
    resp.setContentType("application/vnd.ms-excel");
    try {
        exporterXLS.exportReport();
    } catch (JRException e) {
        e.printStackTrace();
    }
}

【讨论】:

  • 感谢 Henrique 我能够使用 jasper 报告生成我的 xls 报告。现在,当我单击导出按钮时,我能够生成 Excel 报告文件。但我无法下载它。我正在发出服务器请求以使用 Ext.Ajax.request({ url: 'task/GetTaskReportPDF.action'}) 在 tomcat 控制台上的标题中生成报告,我得到 ontent-Disposition 附件内容-Length 0 Content-Type application/vnd.ms-excel Date Fri, 20 Jan 2012 10:00:49 GMT Server Apache-Coyote/1.1 所以我做错了什么,不允许下载弹出窗口来。 .
  • 感谢 Henrique 它有效。现在我想要为我生成的 pdf 报告使用相同的下载窗口。我将更改为 JRPdfExporter exporterPDF = new JRPdfExporter(); exporterPDF.setParameter(JRExporterParameter.JASPER_PRINT, jasperprint); exporterPDF.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); response.setHeader("Content-Disposition", "inline;filename="+ reportfileName); response.setContentType("application/pdf");exporterPDF.exportReport(); 但它没有给我下载窗口来保存或打开生成的 pdf 报告
  • 对不起,您使用的 stackoverflow 有点错误。你现在应该选择你的答案并提出一个新问题。现在是另一个问题
  • 嗨.. henrique 我发布了新主题,您可以点击链接link 转到我的问题。如果您有任何相关的解决方案,我可以解决它。
猜你喜欢
  • 2012-07-02
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2018-11-11
相关资源
最近更新 更多