我正在与 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 架构。任何知道如何进行的人都可以帮助我
最佳答案
我对这个问题的解决方案很简单。当您使用 ExtJs 时,我认为您的 Controller 是用 JavaScript 编写的。
- 请求 java 服务器以 pdf、xls 等格式创建您的报告
- 使用 key 将报告保存在您的 session 中(可以是以英里为单位的时间)
- 将 key 返回到 View 并打开一个新窗口向服务器请求您的报告
新窗口应该包含这样的 URL http://localhost:8080/myApplication/report?key=312312313
如果你想下载到 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();
}
}
关于java - iReport 与 extjs4.0.2a 和 Java + Spring + Hibernate 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922679/