Интеграция iReport с extjs4.0.2a и Java + Spring + Hibernate - PullRequest
2 голосов
/ 19 января 2012

Я работаю над extjs 4.0.2a вместе с Java. Я использую некоторые рамки с Java, такие как Hibernate / JPA и Spring. Теперь я хочу использовать инструмент разработки отчетов Jasper, то есть iReport, для создания моих отчетов в разных форматах (.xls, .pdf) и т. Д. Я знаком с iReport. Я сгенерировал файл iReport в формате .jrxml и .jasper, используя соединение jdbc.

Теперь я хочу интегрировать свой сгенерированный отчет с JAVA, чтобы я мог получить отчет в формате .pdf или .xls. Когда я нажимаю на значок PDF, я могу загрузить отчет, сгенерированный в формате .pdf.

Я использую архитектуру Ext js 4.0.2a mvc. Любой, кто знает, как поступить, может помочь мне

1 Ответ

0 голосов
/ 19 января 2012

Мое решение этой проблемы простое. Поскольку вы используете ExtJ, я думаю, что ваш контроллер в JavaScript.

  1. Сделайте запрос на java-сервер для создания вашего отчета в формате pdf, xls, независимо от того,
  2. Сохранение отчета в сеансе с ключом (может быть временем в миллисекундах)
  3. Верните ключ в представление и откройте новое окно, чтобы запросить у сервера отчет

Новые окна должны содержать 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...