首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将JasperReport导出到包含多个工作表的Excel文件?

如何将JasperReport导出到包含多个工作表的Excel文件?
EN

Stack Overflow用户
提问于 2010-10-20 20:17:37
回答 3查看 27.5K关注 0票数 17

我们有一份报告,客户希望将其导出为具有多个工作表的excel格式。本质上,这两个查询共享相同的参数,但其他一切都是不同的。

jasper中的-报告如何导出到包含多个工作表的excel文件(理想情况下来自不同的数据源)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-26 19:51:09

多亏了这个线程,我可以更轻松地创建一个包含多张工作表的Excel导出。我发现您可以使用以下内容:

代码语言:javascript
复制
ArrayList<JasperPrint> list = new  ArrayList<JasperPrint>();
list.add(jp1); list.add(jp2);
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, list);

导出器将自动使用每个JasperPrint对象来构造每个工作表;还将使用Jasper报告的名称(在jrxml文件中指定)作为每个工作表的名称。

目前这个解决方案在我的本地项目上有效,所以我只想让你知道。

票数 20
EN

Stack Overflow用户

发布于 2010-10-20 22:37:36

多亏了belisarius link,我们似乎找到了答案。它的基本方法是像往常一样为每个工作表创建JasperPrint对象。因此,您需要:

代码语言:javascript
复制
JasperPrint firstWorkSheet = ...;
JasperPrint secondWorkSheet = ...;

此时,JasperPrint对象已经填充了数据源。然后你就可以做到:

代码语言:javascript
复制
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++;
}

这样做的目的是将i设置为firstWorkSheet中当前的页数(应该是1)。然后循环遍历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,以便将每页分解到单独的工作表中。

票数 11
EN

Stack Overflow用户

发布于 2015-10-22 17:02:31

根据当前版本6.1.1,JRXlsExporter.setParameter已弃用。它应该被JRXlsExporter.setExporterInput所取代。因此,更新后的代码将是:

代码语言:javascript
复制
ArrayList<JasperPrint> sheets = new ArrayList<JasperPrint>();
sheets.add(sheet1); 
sheets.add(sheet2);

exporter.setExporterInput(SimpleExporterInput.getInstance(sheets));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3977658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档