public byte[] generate(InputStream inputStream, ReportData reportData) {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
Map params = reportData.getParams() != null ? reportData.getParams() : new HashMap();
params.put(JRParameter.REPORT_LOCALE, new Locale("ru"));
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport,
params,
CollectionUtils.isEmpty(reportData.getDataSources())
? new JREmptyDataSource()
: new JRBeanCollectionDataSource(reportData.getDataSources())
);
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(os));
SimpleXlsxReportConfiguration xlsxReportConfiguration = new SimpleXlsxReportConfiguration();
xlsxReportConfiguration.setMaxRowsPerSheet(30000);
xlsxReportConfiguration.setDetectCellType(true);
exporter.setConfiguration(xlsxReportConfiguration);
exporter.exportReport();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry entry = new ZipEntry("filename.xlsx");
entry.setSize(os.toByteArray().length);
zos.putNextEntry(entry);
zos.write(os.toByteArray());
zos.closeEntry();
zos.close();
return baos.toByteArray();
} catch (IOException | JRException e) {
log.error("Error while producing report: [{}]", e.getMessage(), e);
throw new ReportGenerationException(e);
}
}
Максимальное количество строк на листе должно быть 30000. А если строк больше - мне следует создать 2, 3 или более листов. Помогите, пожалуйста, как разделить лист на несколько листов по 30 000 строк каждый?
У меня есть код, который генерирует отчет и создает zip-файл с этим отчетом внутри [code]public byte[] generate(InputStream inputStream, ReportData reportData) { try (ByteArrayOutputStream os = new ByteArrayOutputStream()) { Map params = reportData.getParams() != null ? reportData.getParams() : new HashMap(); params.put(JRParameter.REPORT_LOCALE, new Locale("ru")); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream); JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, params, CollectionUtils.isEmpty(reportData.getDataSources()) ? new JREmptyDataSource() : new JRBeanCollectionDataSource(reportData.getDataSources()) );
JRXlsxExporter exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(os)); SimpleXlsxReportConfiguration xlsxReportConfiguration = new SimpleXlsxReportConfiguration(); xlsxReportConfiguration.setMaxRowsPerSheet(30000); xlsxReportConfiguration.setDetectCellType(true); exporter.setConfiguration(xlsxReportConfiguration); exporter.exportReport();
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(baos); ZipEntry entry = new ZipEntry("filename.xlsx"); entry.setSize(os.toByteArray().length); zos.putNextEntry(entry); zos.write(os.toByteArray()); zos.closeEntry(); zos.close();
return baos.toByteArray(); } catch (IOException | JRException e) { log.error("Error while producing report: [{}]", e.getMessage(), e); throw new ReportGenerationException(e); } } [/code] Максимальное количество строк на листе должно быть 30000. А если строк больше - мне следует создать 2, 3 или более листов. Помогите, пожалуйста, как разделить лист на несколько листов по 30 000 строк каждый?
У меня есть код, который генерирует отчет и создает zip-файл с этим отчетом внутри
public byte[] generate(InputStream inputStream, ReportData reportData) {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
Map params =...
Я пытаюсь создать предварительный просмотр печати с помощью отчетов Jasper версии 7.0 в Netbeans и использую JDK 19. У меня есть несколько записей в базе данных, и я пытаюсь создать предварительный просмотр печати, когда пользователь нажимает на...
Я пытаюсь создать предварительный просмотр печати с помощью отчетов Jasper версии 7.0 в Netbeans и использую JDK 19. У меня есть несколько записей в базе данных, и я пытаюсь создать предварительный просмотр печати, когда пользователь нажимает на...
Я получаю эту ошибку во время отчета о заполнении:
Setting net.sf.jasperreports.engine.query.JRJdbcQueryExecuterFactory as Query Executer Factory for language: sql
Filling report...
Locale: English (United States)
Time zone: Default...