в моем Java-проекте у меня много отчетов JasperReports со сложными SQL-запросами, содержащими много параметров. Отчеты используются для создания PDF-документов, содержащих данные, возвращаемые запросом, сгруппированные и отформатированные различными способами.
Теперь у меня также есть необходимость напрямую экспортировать результат запроса (например, ResultSet, или Map, или CSV-файл, или аналогичный ...).
Можно ли попросить JasperReports выполнить только запрос и вернуть результаты вместо рендеринга страницы PDF?
(ПРИМЕЧАНИЕ: это не то же самое, что выбор формата вывода csv для рендеринга отчета, потому что этот метод пытается преобразовать дизайн отчета в файл csv ... Вместо этого я хотел бы только «повторно использовать» запрос внутри отчета, также используя управление параметрами JR и т. д.)
Это мой код Java для создания PDF-документа из отчета:
JasperReport report = (JasperReport) JRLoader.loadObject(inStream);
JasperPrint jasperprint = JasperFillManager.fillReport(report, params, conn);
JRAbstractExporter exporter = new JRPdfExporter();
exporter.exportReport();
ByteArrayOutputStream os = (ByteArrayOutputStream) exporter.getParameter(JRExporterParameter.OUTPUT_STREAM);
byte[] formattedReportBytes = os.toByteArray();
return formattedReportBytes;
Я видел, что внутри JasperReports есть класс JRJdbcQueryExecuter
...
Можно ли вызвать его напрямую вместо вызова fillReport
, чтобы получить ResultSet выполненного SQL-запроса?
Спасибо