Мое решение этой проблемы простое. Поскольку вы используете ExtJ, я думаю, что ваш контроллер в JavaScript.
- Сделайте запрос на java-сервер для создания вашего отчета в формате pdf, xls, независимо от того,
- Сохранение отчета в сеансе с ключом (может быть временем в миллисекундах)
- Верните ключ в представление и откройте новое окно, чтобы запросить у сервера отчет
Новые окна должны содержать 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();
}
}