Добрый день, учусь генерировать репорты с помощью этой библиотеки.
сейчас у меня получился такой код
public void export() throws SQLException, JRException, IOException {
String outputPath = "c:/out/report.docx";
//String inputPath = "D:\\Java\\Spring\\src\\main\\resources\\reports\\RESTQualityTask.jrxml";
String inputPath = "D:\\Java\\Spring\\src\\main\\resources\\reports\\RESTQualityTask.jrxml";
//forming raw data
List<RESTQualityTask> quality = new ArrayList<>();
// RESTQualityTask addme = postgresService.giveById(291);
// quality.add(addme);
quality = postgresService.giveall();
// put data to JR subsystem
JRBeanCollectionDataSource beanCollDataSource = new JRBeanCollectionDataSource(quality);
// Map report variable to report
Map<String, Object> paramaters = new HashMap<String, Object>();
// paramaters.put("qualityTaskId", 1234);
// get null report to JR subsystem
File reportPattern = new File(inputPath);
JasperDesign jasperDesign = JRXmlLoader.load(reportPattern);
// Compile jasper
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
// jasper fill
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramaters, beanCollDataSource);
//
JRDocxExporter ex = new JRDocxExporter();
ex.setExporterInput(new SimpleExporterInput(jasperPrint));
ex.setExporterOutput(new SimpleOutputStreamExporterOutput(outputPath));
ex.exportReport();
// JasperExportManager.exportReportToPdfFile(jasperPrint, outputPath);
}
Отчет генерируется но есть некоторые сложности
1) Если я вытягиваю одну запись, то отчет заполняется правильно, если я вытягиваю несколько записей, первая страница заполнена , а все остальные страницы будут пустыми. Что я делаю не так?
2) Сейчас для доступа к файлам отчетов и выгрузки стоят полные пути в файловой системе, как мне сделать путь коротким?
3) Какими методами мне можно отдать файл в Web ? Что я должен использовать ?