Dzięki belisarius link wydaje się, że to wymyśliliśmy. Podstawą tego jest utworzenie obiektów JasperPrint dla każdego arkusza w normalny sposób. Więc trzeba: Przedmioty
JasperPrint firstWorkSheet = ...;
JasperPrint secondWorkSheet = ...;
JasperPrint są już wypełnione źródła danych w tym momencie. Następnie należy zrobić:
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++;
}
Co to ustawia i
do liczby stron obecnie w firstWorkSheet
(który powinien być jeden). Następnie zapisuje strony w pliku secondWorkSheet
i dodaje je do pierwszej Arkuszy Pracy.
Upewnij się, że w twoim jasperReport masz ustawione drukowanie jako jedną stronę dla każdego pliku jrxml arkusza roboczego i powinieneś być gotowy. Przyjdę zaktualizować to, jeśli coś się zmieni, ale to powinno zadziałać.
UPDATE:
Odkryte trzeba użyć net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter
zamiast
net.sf.jasperreports.engine.export.JRXlsExporter
gdyż nie wydaje się być problemem podczas eksportu do wielu arkuszy roboczych.
także ustawienie w pliku jrxml dla isIgnorePagination
musi być:
isIgnorePagination="true"
tak, że każdy plik jrxml jest eksportowany jako jednej stronie.
Następnie należy ustawić parametr JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET
na true, aby dzielił każdą stronę na osobny arkusz.
Nazwałam arkusze, używając: JRXlsExporterParameter.SHEET_NAMES, ale nazwy były nieczynne na kartach arkuszy. Przy użyciu powyższego kodu dopasowano nazwy do właściwych arkuszy. Dziękujemy +1 –
+1 ładna odpowiedź. dzięki – Addicted
Rozważ zaktualizowanie swojej odpowiedzi JRXlsExporter.setParameter jest przestarzałe –