JasperReport 教程之导出报表


JasperReport 教程之导出报表 我们已经看到在前面的章节中,如何打印和查看的 JasperReport 生成的文档。 在这里,我们将看到如何在其他格式,如 PDF,HTML 和 XLS 转换或导出这些 报告。 Facade 类 net.sf.jasperreports.engine.JasperExportManager 提供实 现这一功能。导出方式转变 JasperPrint 对象(.jrprint 文件)导入到不同的格 式。 yiibai.com 下面的代码(JasperReportExport.java)演示了 JasperReport 文档的导出过 程。该 JasperExportManager 提供的方法将报表导出成 PDF,HTML 和 XML。 导出到使用的类 net.sf.jasperreports.engine.export.JRXlsExporter 的 XLS 格 式。此代码生成以下三个文件: yiibai.com  sample_report.pdf  sample_report.htmll  sample_report.xls 导出为其他格式 让我们来写一个报表模板。在 JRXML 文件的内容 (C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml) 如下: 接着,POJO 文 件 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBean.java 的内容 如下: package com.yiibai; public class DataBean { private String name; private String country; public String getName() { return name; } public void setName(String name){ this.name = name; } public String getCountry() { return country; } public void setCountry(String country){ this.country = country; } } 文 件 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBeanList.java 的 内容如下: package com.yiibai; import java.util.ArrayList; public class DataBeanList { public ArrayList getDataBeanList() { ArrayList dataBeanList = new ArrayList(); dataBeanList.add(produce("Manisha","India")); dataBeanList.add(produce("Dennis Ritchie","USA")); dataBeanList.add(produce("V.Anand","India")); dataBeanList.add(produce("Shrinath","California")); return dataBeanList; } /** * This method returns a DataBean object, * with name and country set in it. */ private DataBean produce(String name, String country){ DataBean dataBean = new DataBean(); dataBean.setName(name); dataBean.setCountry(country); return dataBean; } } 写一个主类文件 JasperReportFill.java,它从类(DataBeanList)获取 java bean 集合,并将其传递到 Jasper 报表引擎,填补了报表模板。把它保存到目 录 C:\tools\jasperreports-5.0.1\test\src\com\yiibai. package com.yiibai; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.export.JRXlsExporter; public class JasperReportFill { @SuppressWarnings("unchecked") public static void main(String[] args){ String sourceFileName = "c://tools/jasperreports-5.0.1/" + "test/jasper_report_template.jasper"; String printFileName = null; DataBeanList DataBeanList = new DataBeanList(); ArrayList dataList = DataBeanList.getDataBeanList(); JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList); Map parameters = new HashMap(); try { printFileName = JasperFillManager.fillReportToFile(sourceFileName, parameters, beanColDataSource); if (printFileName != null){ /** * 1- export to PDF */ JasperExportManager.exportReportToPdfFile(printFileName, "C://sample_report.pdf"); /** * 2- export to HTML */ JasperExportManager.exportReportToHtmlFile(printFileName, "C://sample_report.htmll"); /** * 3- export to Excel sheet */ JRXlsExporter exporter = new JRXlsExporter(); exporter.setParameter(JRExporterParameter.INPUT_FILE_NAME, printFileName); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "C://sample_report.xls"); exporter.exportReport(); } } catch (JRException e){ e.printStackTrace(); } } } 在这里,我们已经包括了逻辑 Jasper 打印文件导出到 PDF,HTML 和 XLS 格式。 生成报表 让我们用我们的常规 Ant 构建过程编译和执行上述文件。 build.xml 文件如下 图所示: yiibai.com 进入命令提示符,然后转到目录 C:\tools\jasperreports-5.0.1\test,其中 build.xml 已放置。最后执行的命令 ant -Dmain-class=com.yiibai.JasperReportFill. 输出如下所 示: www.yiibai.com C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.yiibai.JasperReportFill Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml clean-sample: [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint compile: [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28: warning: 'includeantruntime' was not set, defaulting t [javac] Compiling 4 source files to C:\tools\jasperreports-5.0.1\test\classes compilereportdesing: [jrc] Compiling 1 report design files. [jrc] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory). [jrc] log4j:WARN Please initialize the log4j system properly. [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.htmll#noconfig for more info. [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK. run: [echo] Runnin class : com.yiibai.JasperReportFill [java] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment). [java] log4j:WARN Please initialize the log4j system properly. executereport: [echo] Im here BUILD SUCCESSFUL Total time: 32 seconds 正如上面执行的结果,会发现三个文件 sample_report.pdf, sample_report.htmll,sample_report.xls 已生成在 C:\ 目录. 同为比较常用的报表工具,FineReport 的报表导出操作不需要代码, FineReport 中所有的报表代码细节对用户是隐藏的,呈现出的是是可视化的设 计过程,具体到报表导出,如下: 1. 描述 FineReport 导出即可以在设计器中的输出模板,也可以在浏览器端输出为各 种格式,还可以通过 Api 接口导出。 2. 设计器中导出 设计器中导出顾名思义,就是指不预览模板查看效果,直接在设计器里面通 过可视化操作导出模板,详细请参照设计器中导出 3. 浏览器端导出 在浏览器端导出就是指在 web 端预览模板查看效果之后导出,详细请参照 BS 端导出 3.1 导出机制 在浏览器端输出的运行机制是:选择某种输出后,先根据报表内容,在服务 器的内存中将页面中的内容全部生成完毕,即生成对应格式的对象;然后再由 serverlet 直接推送给客户端。 报表的输出遵循所见即所得原则,即在浏览器中看到的样子导出的结果就是 什么样子,若单元格设置了形态分页预览下,不管是什么导出格式,都是导出显 示值而不是实际值。 4. API 导出 通过导出 API 在程序中导出,详细请查看导出 API。 设计器中的导出 1. 导出格式 设计器中的导出格式有如下几种: PDF 格式:导出 PDF 格式文件; Excel 格式:导出 Excel 格式文件,又包含分页导出、原样导出和分页分 Sheet 导出,他们的区别可参考 Excel 多种导出方式文档; Word 格式:导出 Word 格式文件,不支持导出悬浮元素; SVG 格式(逗号分隔):导出 SVG 格式文件; 文本文件(制表符分隔):导出文本文件; 模板(内置数据):导出内置数据模板,把数据直接保存在模板中,不需要 数据库,就可以浏览到数据,方便用户进行功能测试或者发送模板给帆软技术进 行调试纠错。 2. 步骤 点击菜单文件>输出,如下图所示,即可对模板进行多种格式的导出: 3. 示例 下面我们以 GettingStarted.cpt 导出成 PDF 样式为例说明导出方法。 3.1 打开模板 打开模 板:%FR_HOME%\WebReport\WEB-INF\reportlets\GettingStarted.cp t。 3.2 导出 点击菜单文件>输出,选择 PDF 格式输出,由于此模板有参数,因此会先弹 出参数对话框,如下图: 输入参数值后,点击确定按钮,会弹出如下对话框: 选择保存路径,点击保存,弹出如下提示则说明导出成功: 注:导出带参数的模板会弹出参数对话框,其会根据对话框中设置的参数值 进行导出,若参数设置了默认值,在弹出的参数对话框中可以直接获取参数默认 值,并根据默认值进行导出数据。而若参数对话框中不输入值的话,则导出结果 中就不会有数据。 BS 浏览器端导出 1. 导出格式 PDF:导出 PDF 格式文件; Excel:导出 Excel 格式文件,又分为分页导出、原样导出、分页分 Sheet 导出,详细请查看 Excel 多种导出方式文档; Word:导出 Word 格式文件,不支持导出悬浮元素,详细请查看 Word 导 出 Image:导出为图片,又分为 JPG、PNG、GIF 和 BMP 四种格式。 注:将报表输出为 Word 不支持导出悬浮元素和多 Sheet 下的不同页面设置; excel 不支持 Html 中部分标签,单元格背景只支持纯色,另外在导出为图片时, 不建议使用 GIF 格式,可以采用 PNG 替代,原因是导出 GIF 需要的内存比较大。 另:聚合报表和表单不支持导出。 2. 步骤 预览模板,点击工具栏中的输出,即可以对模板进行多种格式的导出,如下 图所示: 注:若模板有参数,需要查询出数据后才能够点击输出进行导出。 3. 示例 下面我们以 GettingStarted.cpt 导出成 PDF 样式为例说明导出方法。 3.1 打开模板 打开模 板:%FR_HOME%\WebReport\WEB-INF\reportlets\GettingStarted.cp t。 3.2 分页预览 点击分页预览,选择完参数后,点击查询。 3.3 导出 点击工具栏上的输出按钮,然后选择 PDF 格式,会弹出如下图所示的对话框: 点击保存,选择保存路径即可将数据导出成 PDF 格式。
还剩16页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 7 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

fineiris

贡献于2015-05-05

下载需要 7 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!