我们已经看到在前面的章节中,如何打印和查看的JasperReport生成的文档。在这里,我们将看到如何在其他格式,如PDF,HTML和XLS转换或导出这些报告。 Facade类net.sf.jasperreports.engine.JasperExportManager提供实现这一功能。导出方式转变JasperPrint对象(.jrprint文件)导入到不同的格式。

下面的代码(JasperReportExport.java)演示了JasperReport文档的导出过程。该JasperExportManager提供的方法将报表导出成PDF,HTML和XML。导出到使用的类net.sf.jasperreports.engine.export.JRXlsExporter的XLS格式。此代码生成以下三个文件:

  • sample_report.pdf

  • sample_report.htmll

  • sample_report.xls

导出为其他格式

让我们来写一个报表模板。在JRXML文件的内容 (C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml) 如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
  3. "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
  4. <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
  7. http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
  8. name="jasper_report_template" language="groovy" pageWidth="595"
  9. pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
  10. topMargin="20" bottomMargin="20">
  11.  
  12. <queryString>
  13. <![CDATA[]]>
  14. </queryString>
  15. <field name="country" class="java.lang.String">
  16. <fieldDescription><![CDATA[country]]></fieldDescription>
  17. </field>
  18. <field name="name" class="java.lang.String">
  19. <fieldDescription><![CDATA[name]]></fieldDescription>
  20. </field>
  21. <columnHeader>
  22. <band height="23">
  23. <staticText>
  24. <reportElement mode="Opaque" x="0" y="3" width="535"
  25. height="15" backcolor="#70A9A9" />
  26. <box>
  27. <bottomPen lineWidth="1.0" lineColor="#CCCCCC" />
  28. </box>
  29. <textElement />
  30. <text><![CDATA[]]> </text>
  31. </staticText>
  32. <staticText>
  33. <reportElement x="414" y="3" width="121" height="15" />
  34. <textElement textAlignment="Center"
  35. verticalAlignment="Middle">
  36. <font isBold="true" />
  37. </textElement>
  38. <text><![CDATA[Country]]></text>
  39. </staticText>
  40. <staticText>
  41. <reportElement x="0" y="3" width="136" height="15" />
  42. <textElement textAlignment="Center"
  43. verticalAlignment="Middle">
  44. <font isBold="true" />
  45. </textElement>
  46. <text><![CDATA[Name]]></text>
  47. </staticText>
  48. </band>
  49. </columnHeader>
  50. <detail>
  51. <band height="16">
  52. <staticText>
  53. <reportElement mode="Opaque" x="0" y="0" width="535"
  54. height="14" backcolor="#E5ECF9" />
  55. <box>
  56. <bottomPen lineWidth="0.25" lineColor="#CCCCCC" />
  57. </box>
  58. <textElement />
  59. <text><![CDATA[]]> </text>
  60. </staticText>
  61. <textField>
  62. <reportElement x="414" y="0" width="121" height="15" />
  63. <textElement textAlignment="Center"
  64. verticalAlignment="Middle">
  65. <font size="9" />
  66. </textElement>
  67. <textFieldExpression class="java.lang.String">
  68. <![CDATA[$F{country}]]>
  69. </textFieldExpression>
  70. </textField>
  71. <textField>
  72. <reportElement x="0" y="0" width="136" height="15" />
  73. <textElement textAlignment="Center"
  74. verticalAlignment="Middle" />
  75. <textFieldExpression class="java.lang.String">
  76. <![CDATA[$F{name}]]>
  77. </textFieldExpression>
  78. </textField>
  79. </band>
  80. </detail>
  81. </jasperReport>

接着,POJO文件 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBean.java 的内容如下:

  1. package com.yiibai;
  2.  
  3. public class DataBean {
  4. private String name;
  5. private String country;
  6.  
  7. public String getName() {
  8. return name;
  9. }
  10.  
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14.  
  15. public String getCountry() {
  16. return country;
  17. }
  18.  
  19. public void setCountry(String country) {
  20. this.country = country;
  21. }
  22. }

文件 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBeanList.java 的内容如下:

  1. package com.yiibai;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. public class DataBeanList {
  6. public ArrayList<DataBean> getDataBeanList() {
  7. ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();
  8.  
  9. dataBeanList.add(produce("Manisha", "India"));
  10. dataBeanList.add(produce("Dennis Ritchie", "USA"));
  11. dataBeanList.add(produce("V.Anand", "India"));
  12. dataBeanList.add(produce("Shrinath", "California"));
  13.  
  14. return dataBeanList;
  15. }
  16.  
  17. /**
  18. * This method returns a DataBean object,
  19. * with name and country set in it.
  20. */
  21. private DataBean produce(String name, String country) {
  22. DataBean dataBean = new DataBean();
  23. dataBean.setName(name);
  24. dataBean.setCountry(country);
  25. return dataBean;
  26. }
  27. }

写一个主类文件JasperReportFill.java,它从类(DataBeanList)获取java bean集合,并将其传递到Jasper 报表引擎,填补了报表模板。把它保存到目录 C:\tools\jasperreports-5.0.1\test\src\com\yiibai.

  1. package com.yiibai;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. import net.sf.jasperreports.engine.JRException;
  8. import net.sf.jasperreports.engine.JRExporterParameter;
  9. import net.sf.jasperreports.engine.JasperExportManager;
  10. import net.sf.jasperreports.engine.JasperFillManager;
  11. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
  12. import net.sf.jasperreports.engine.export.JRXlsExporter;
  13.  
  14. public class JasperReportFill {
  15. @SuppressWarnings("unchecked")
  16. public static void main(String[] args) {
  17. String sourceFileName = "c://tools/jasperreports-5.0.1/"
  18. + "test/jasper_report_template.jasper";
  19. String printFileName = null;
  20. DataBeanList DataBeanList = new DataBeanList();
  21. ArrayList dataList = DataBeanList.getDataBeanList();
  22. JRBeanCollectionDataSource beanColDataSource =
  23. new JRBeanCollectionDataSource(dataList);
  24.  
  25. Map parameters = new HashMap();
  26. try {
  27. printFileName = JasperFillManager.fillReportToFile(sourceFileName,
  28. parameters, beanColDataSource);
  29. if (printFileName != null) {
  30. /**
  31. * 1- export to PDF
  32. */
  33. JasperExportManager.exportReportToPdfFile(printFileName,
  34. "C://sample_report.pdf");
  35.  
  36. /**
  37. * 2- export to HTML
  38. */
  39. JasperExportManager.exportReportToHtmlFile(printFileName,
  40. "C://sample_report.htmll");
  41.  
  42. /**
  43. * 3- export to Excel sheet
  44. */
  45. JRXlsExporter exporter = new JRXlsExporter();
  46.  
  47. exporter.setParameter(JRExporterParameter.INPUT_FILE_NAME,
  48. printFileName);
  49. exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
  50. "C://sample_report.xls");
  51.  
  52. exporter.exportReport();
  53. }
  54. } catch (JRException e) {
  55. e.printStackTrace();
  56. }
  57. }
  58. }

在这里,我们已经包括了逻辑Jasper 打印文件导出到PDF,HTML和XLS格式。

生成报表

让我们用我们的常规Ant构建过程编译和执行上述文件。 build.xml文件如下图所示:

 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="JasperReportTest" default="executereport" basedir=".">
  3. <import file="baseBuild.xml"/>
  4.  
  5. <target name="executereport" depends="compile,compilereportdesing,run">
  6. <echo message="Im here"/>
  7. </target>
  8. <target name="compilereportdesing"
  9. description="Compiles the JXML file and
  10. produces the .jasper file.">
  11. <taskdef name="jrc"
  12. classname="net.sf.jasperreports.ant.JRAntCompileTask">
  13. <classpath refid="classpath" />
  14. </taskdef>
  15. <jrc destdir=".">
  16. <src>
  17. <fileset dir=".">
  18. <include name="*.jrxml" />
  19. </fileset>
  20. </src>
  21. <classpath refid="classpath" />
  22. </jrc>
  23. </target>
  24. </project>

进入命令提示符,然后转到目录C:\tools\jasperreports-5.0.1\test,其中build.xml已放置。最后执行的命令 ant -Dmain-class=com.yiibai.JasperReportFill. 输出如下所示:

  1. C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.yiibai.JasperReportFill
  2. Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml
  3.  
  4. clean-sample:
  5. [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
  6. [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
  7. [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint
  8.  
  9. compile:
  10. [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
  11. [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
  12. warning: 'includeantruntime' was not set, defaulting t
  13. [javac] Compiling 4 source files to C:\tools\jasperreports-5.0.1\test\classes
  14.  
  15. compilereportdesing:
  16. [jrc] Compiling 1 report design files.
  17. [jrc] log4j:WARN No appenders could be found for logger
  18. (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
  19. [jrc] log4j:WARN Please initialize the log4j system properly.
  20. [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.htmll#noconfig for more info.
  21. [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.
  22.  
  23. run:
  24. [echo] Runnin class : com.yiibai.JasperReportFill
  25. [java] log4j:WARN No appenders could be found for logger
  26. (net.sf.jasperreports.extensions.ExtensionsEnvironment).
  27. [java] log4j:WARN Please initialize the log4j system properly.
  28.  
  29. executereport:
  30. [echo] Im here
  31.  
  32. BUILD SUCCESSFUL
  33. Total time: 32 seconds

正如上面执行的结果,会发现三个文件sample_report.pdf,sample_report.htmll,sample_report.xls已生成在 C:\ 目录.

JasperReport导出报表8的更多相关文章

  1. 如何利用FastReport.Net 设计并导出报表?

    在你的程序中,你可以使用FastReport.Net 报表设计器.要做到这一点,你需要使用报表对象设计方法: report1 = new Report();report1.Load("rep ...

  2. 【ABAP系列】SAP ALV 导出报表数据 始终使用选定的格式”,一旦勾上,就再也不会弹出选择框了。

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ALV 导出报表数据 始 ...

  3. JasperReport填充报表6

    任何报告工具的主要目的是为了生产出高品质的文档.举报填充过程有助于报告工具通过操纵数据集来实现这一目标.需要报表填充过程的主要输入是: 报表模板:这是实际的JasperReport文件 报告参数:这些 ...

  4. JasperReport编译报表设计5

    我们在前面的章节中产生的JasperReport模板(JRXML文件).这个文件不能直接用于生成报告.它必须被编译成JasperReport的“本地二进制"格式,称为Jasperfile.在 ...

  5. JavaScript+XML+VBA导出报表初步构想

    最近在做人事档案管理系统遇到的一个问题就是种类多.数量大的报表打印问题.这个系统的一个特点就是信函打印,各种介绍信.各种证明信.对于这样的重复性的功能,最好的方法就是所有的报表实现格式套用. 经过分析 ...

  6. JasperReport子报表参数传递

    子报表参数传递 下图的参数名称可以自定义 再子报表新增一个同名称的参数即可

  7. js导出报表

    原文链接:https://blog.csdn.net/qq_37936542/article/details/78376156 需求:项目中有一个学生签到模块需要导出每天的签到数据,一开始用poi在后 ...

  8. phpexcel 使用模板导出报表

    function exportExcel($list, $filename, $indexKey = array()){ require_once(getcwd() . '../../app/Libs ...

  9. thinkphp导出报表

    这是我写的一个方法,这个方法可以直接使用在你的代码上.下面我画红色的就是要修改或者删除的.public function import(){ /*创建PHPEXCLE读取,默认excel2007,最好 ...

随机推荐

  1. datagrid 的标题的内容不对应整齐

    $(document).ready(function(){ var column = "[["+ "{'title':'工号','field':'grantorCode' ...

  2. idea激活破解

    下载链接:https://pan.baidu.com/s/1BADk1MCm0YxtB6zoX0DivA 提取码 ze9m将破解补丁放到bin文件中jetbrains-all.jar 在这俩个文件最后 ...

  3. 第四周课堂笔记3th

    1.函数的嵌套 作用域,说的是变量 全局作用域:内置命名空间,全局命名空间  全局空间不可以引用局部空间 局部作用域: 局部命名空间  开辟的临时空间前提是调用了函数 全局作用域在整个文件中被使用 L ...

  4. 「APIO 2019」桥梁

    题目 三天终于把\(APIO\)做完了 这题还是比较厉害的,如果不知道这是个分块应该就自闭了 考虑一个非常妙的操作,按照操作分块 我们设一个闸值\(S\),把\(S\)个边权修改操作分成一块,把所有的 ...

  5. SQL Serve 临时表

    SQL Server 支持临时表.临时表就是那些名称以井号 (#) 开头的表.如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表.临时表不存储在当前数据库内,而是存储在系统数据 ...

  6. winform 旋转图片

    //img.RotateFlip(RotateFlipType.Rotate90FlipNone); //顺时针旋转90度 RotateFlipType.Rotate90FlipNone //逆时针旋 ...

  7. selenium借助AutoIt识别上传(下载)详解【转】

    AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...

  8. 在DataWorks中实现指定UDF只能被指定账户访问

    背景 之前写过一篇文章是关于“DataWorks和MaxCompute内部权限体系的区别”有兴趣的朋友可以点击阅读查看详情.但是还是有些同学会问,我如何在DataWorks中实现我的具体某个Resou ...

  9. videojs实现双击视频全屏播放、播放器全屏时视频未全屏

    https://blog.csdn.net/staritstarit/article/details/78451963 暂停时只能使用左下角的暂停按钮,点击视频时不再响应 使用width和height ...

  10. mysql索引优化及explain关键字段解释

    一.explain关键字解释 1.id MySQL QueryOptimizer 选定的执行计划中查询的序列号,表示查询中执行select 子句或操作表的顺序.id 值越大优先级越高,越先被执行.id ...