Jac*_*oen 17 excel export jasper-reports
我们有一份报告称客户希望将其导出为具有多个工作表的Excel格式.本质上,这两个查询共享相同的参数,但其他一切都不同.
在jasper-reports中如何导出到包含多个工作表的excel文件(理想情况下来自不同的数据源)?
小智 20
感谢这个帖子,我真的更容易创建一个包含多个工作表的Excel导出.我发现你可以使用以下内容:
ArrayList<JasperPrint> list = new ArrayList<JasperPrint>();
list.add(jp1); list.add(jp2);
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, list);
Run Code Online (Sandbox Code Playgroud)
并且导出器将自动使用每个JasperPrint对象来构造每个工作表; Jasper报告的名称(在jrxml文件中指定)也用作每个工作表的名称.
目前这个解决方案适用于我的本地项目,所以我只是想让你知道.
Jac*_*oen 11
感谢belisarius链接我们似乎已经弄明白了.如何操作的基础是像往常一样为每张纸创建JasperPrint对象.所以你有了:
JasperPrint firstWorkSheet = ...;
JasperPrint secondWorkSheet = ...;
Run Code Online (Sandbox Code Playgroud)
此时JasperPrint对象已经填充了数据源.然后你做:
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++;
}
Run Code Online (Sandbox Code Playgroud)
这是什么设置i
当前的页面数firstWorkSheet
(应该是一个).然后它循环secondWorkSheet
遍历页面并将它们添加到firstWorkSheet.
确保你在jasperReport中将它设置为每个工作表jrxml文件的一个页面打印,你应该很高兴.如果有任何变化,我会更新这个,但这应该有效.
更新:
发现你需要使用
net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter
代替
net.sf.jasperreports.engine.export.JRXlsExporter
因为导出到多个工作表时似乎存在问题.
还isIgnorePagination
需要在jrxml文件中设置:
isIgnorePagination="true"
这样每个jrxml文件都作为单个页面导出.
然后,您需要将JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET
参数设置为true,以便将每个页面分成单独的工作表.
归档时间: |
|
查看次数: |
25928 次 |
最近记录: |