Comment exporter un JasperReport vers un fichier Excel avec plusieurs feuilles de travail?
Nous avons un rapport que le client souhaite avoir exporté au format excel où il a plusieurs feuilles de calcul. Essentiellement les deux requêtes partagent les mêmes paramètres, mais tout le reste est différent.
dans jasper-rapports comment exporter vers un fichier excel avec plusieurs feuilles de travail (idéalement à partir de différentes sources de données)?
3 réponses
grâce à ce thread, il m'a vraiment été plus facile de créer un export Excel avec plusieurs feuilles. Ce que j'ai découvert, c'est que vous pourriez utiliser ce qui suit:
ArrayList<JasperPrint> list = new ArrayList<JasperPrint>();
list.add(jp1); list.add(jp2);
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, list);
et l'exportateur utilisera automatiquement chaque objet JasperPrint pour construire chaque feuille; aussi le nom du rapport Jasper (tel que spécifié dans le fichier jrxml) est utilisé comme nom de chaque feuille.
Actuellement, cette solution fonctionne sur mon projet local, donc je voulais juste vous laisser savoir.
Grâce à bélisaire lien nous semblent avoir compris. Les bases de la façon de le faire est de créer vos objets JasperPrint pour chaque feuille comme vous le feriez normalement. Si vous avez:
JasperPrint firstWorkSheet = ...;
JasperPrint secondWorkSheet = ...;
les objets JasperPrint sont déjà remplis de la source de données à ce point. Puis tu fais:
List<JRPrintPage> pages = new ArrayList<JRPrintPage>(secondWorkSheet.getPages());
int i = firstWorkSheet.getPages().size();
for (int count = 0; count < pages.size(); count++) {
firstWorkSheet.addPage(i, (JRPrintPage) pages.get(count));
i++;
}
ce Que cela fait, il définit i
au nombre de pages actuellement dans le firstWorkSheet
(qui devrait être). Puis il boucle à travers les pages dans le secondWorkSheet
et les ajoute à le firstWorkSheet.
assurez-vous que dans votre jasperReport vous l'Imprimez comme une page pour chaque feuille de travail jrxml et vous devriez être bon à aller. Je viendrai mettre à jour ceci si quelque chose change, mais cela devrait fonctionner.
mise à jour:
Découvert que vous devez utiliser
net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter
au lieu de
net.sf.jasperreports.engine.export.JRXlsExporter
comme il semble y avoir un problème lors de l'exportation de plusieurs fiches de travail.
Également le paramètre dans le fichier jrxml isIgnorePagination
doit être:
isIgnorePagination="true"
pour que chaque fichier jrxml soit exporté en une seule page.
alors vous devez définir JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET
paramètre à true de façon à ce que chaque page soit divisée en une feuille de travail distincte.
selon la version actuelle 6.1.1,JRXlsExporter.setParameter
est obsolète. Il devrait être remplacé par JRXlsExporter.setExporterInput
. Ainsi, la mise à jour de code serait:
ArrayList<JasperPrint> sheets = new ArrayList<JasperPrint>();
sheets.add(sheet1);
sheets.add(sheet2);
exporter.setExporterInput(SimpleExporterInput.getInstance(sheets));