报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML。Jasper文件查看和打印将包括在本章中。导出将包括在下一章导出报表.

查看报表

JasperReport提供了一个内置的浏览器观看原始格式生成的报表。这是一个基于Swing的组件和其他Java应用程序可以无需将文档导出为其他格式,以便查看或打印此集成组件。net.sf.jasperreports.view.JRViewer类表示这个可视组件。这个类也可以被定制为每个应用程序的需要,通过继承它。

JasperReports也有用来查看报表的可视化组件Swing应用程序。此应用程序可以帮助在相同的格式查看报表为*.jrprint就产生了。这个Swing应用程序是在类net.sf.jasperreports.view.JasperViewer实现。要使用此功能,我们可以把这个包成一个Ant目标,以查看报表。

查看生成的报告

下面的示例演示如何查看使用JasperViewer类的报表。

让我们来写一个报告模板。在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>

接下来,让我们通过Java数据对象(Java bean)的集合,到Jasper报表引擎,填补了这一编译报告。

写一个POJO DataBean.java表示数据对象(的Java bean)。这个类定义了两个字符串对象name和country。把它保存到目录 C:\tools\jasperreports-5.0.1\test\src\com\yiibai.

  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. }

编写一个类DataBeanList.java具有业务逻辑生成java bean对象的集合。这是进一步传递到Jasper 报表引擎,生成报告。在这里,我们添加在列表中的4个DataBean进行对象。把它保存到目录C:\tools\jasperreports-5.0.1\test\src\com\yiibai.

  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.JasperFillManager;
  9. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
  10.  
  11. public class JasperReportFill {
  12. @SuppressWarnings("unchecked")
  13. public static void main(String[] args) {
  14. String sourceFileName =
  15. "c://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";
  16. DataBeanList DataBeanList = new DataBeanList();
  17. ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();
  18.  
  19. JRBeanCollectionDataSource beanColDataSource =
  20. new JRBeanCollectionDataSource(dataList);
  21.  
  22. Map parameters = new HashMap();
  23. try {
  24. JasperFillManager.fillReportToFile(
  25. sourceFileName,
  26. parameters,
  27. beanColDataSource);
  28. } catch (JRException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }

让我们来写一个目标viewFillReport的build.xml文件。 build.xml文件如下所示:

导入文件 - baseBuild.xml环境设置,并应放置在同一目录中的build.xml。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="JasperReportTest" default="viewFillReport" basedir=".">
  3. <import file="baseBuild.xml"/>
  4.  
  5. <target name="viewFillReport" depends="compile,compilereportdesing,run"
  6. description="Launches the report viewer
  7. to preview the report stored in the .JRprint file.">
  8. <java classname="net.sf.jasperreports.view.JasperViewer" fork="true">
  9. <arg value="-F${file.name}.JRprint" />
  10. <classpath refid="classpath" />
  11. </java>
  12. </target>
  13. <target name="compilereportdesing"
  14. description="Compiles the JXML file and
  15. produces the .jasper file.">
  16. <taskdef name="jrc"
  17. classname="net.sf.jasperreports.ant.JRAntCompileTask">
  18. <classpath refid="classpath" />
  19. </taskdef>
  20. <jrc destdir=".">
  21. <src>
  22. <fileset dir=".">
  23. <include name="*.jrxml" />
  24. </fileset>
  25. </src>
  26. <classpath refid="classpath" />
  27. </jrc>
  28. </target>
  29. </project>

接下来,让我们打开命令行窗口并转到build.xml文件放置的目录。最后执行的命令 ant -Dmain-class=com.yiibai.JasperReportFill(viewFillReport是默认的目标)。因此,我们看到一个JasperViewer窗口,如下面的屏幕:

打印报表

我们可以使用net.sf.jasperreports.engine.JasperPrintManager类打印的JasperReports类库生成的文件(在他们的专有格式i.eJasperPrint对象)。这是依赖于Java2 API打印一个假象类。我们还可以打印文档,一旦JasperReport的文档导出为其他格式,如HTML或PDF。

打印生成的报告

下面的代码演示报表的打印。让我们更新现有的类JasperReportFill。我们将使用JasperPrintManager.printReport()方法。此方法需要源文件名.jrprint(这里我们通过我们在上一步生成的使用方法JasperFillManager.fillReportToFile())作为第一个参数。第二个参数是布尔值,用于显示标准打印对话框(我们将其设置为true这里)。

 
  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.JasperFillManager;
  9. import net.sf.jasperreports.engine.JasperPrintManager;
  10. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
  11.  
  12. public class JasperReportFill {
  13. @SuppressWarnings("unchecked")
  14. public static void main(String[] args) {
  15. String sourceFileName = "c://tools/jasperreports-5.0.1/" +
  16. "test/jasper_report_template.jasper";
  17. String printFileName = null;
  18. DataBeanList DataBeanList = new DataBeanList();
  19. ArrayList dataList = DataBeanList.getDataBeanList();
  20.  
  21. JRBeanCollectionDataSource beanColDataSource =
  22. new JRBeanCollectionDataSource(dataList);
  23.  
  24. Map parameters = new HashMap();
  25. try {
  26. printFileName = JasperFillManager.fillReportToFile(
  27. sourceFileName,
  28. parameters,
  29. beanColDataSource);
  30. if(printFileName != null){
  31. JasperPrintManager.printReport(
  32. printFileName, true);
  33. }
  34. } catch (JRException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. }

现在,让我们将此文件保存到目录C:\tools\jasperreports-5.0.1\test\src\com\yiibai. 我们将使用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"
  6. depends="compile,compilereportdesing,run">
  7. <echo message="Im here"/>
  8. </target>
  9. <target name="compilereportdesing"
  10. description="Compiles the JXML file and
  11. produces the .jasper file.">
  12. <taskdef name="jrc"
  13. classname="net.sf.jasperreports.ant.JRAntCompileTask">
  14. <classpath refid="classpath" />
  15. </taskdef>
  16. <jrc destdir=".">
  17. <src>
  18. <fileset dir=".">
  19. <include name="*.jrxml" />
  20. </fileset>
  21. </src>
  22. <classpath refid="classpath" />
  23. </jrc>
  24. </target>
  25. </project>

接下来,让我们打开命令提示符并转到build.xml文件放置的目录。最后,执行命令 ant -Dmain-class=com.yiibai.JasperReportPrint. 因此,会出现一个打印对话框。单击确定以打印文档。

JasperReport查看和打印报告7的更多相关文章

  1. Postman----打开postman console控制台,查看接口测试打印log

    经常在脚本中使用变量时,你可能需要看到变量获取到的值,你可以使用Postman Console去实现的.操作步骤:应用菜单-->View--->Show Postman Console,去 ...

  2. A4纸尺寸 web打印报告

    A4纸对应的像素尺寸: <style> @media print { .Noprn{ display:none;} .print-hidden { display: none !impor ...

  3. iOS - 代码查看控制台打印内存使用情况:

    1.先导入: #import <mach/mach.h> 2.写此方法.单位为兆(M). void report_memory(void) { struct task_basic_info ...

  4. linux下tomcat服务器的启动和关闭以及查看实时打印日志

    本页面中的操作都在tomcat的bin目录下 <一> 一般我都是使用: ./shutdom.sh //关闭tomcat ./startup.sh //开启tomcat服务 <二> ...

  5. windows查看笔记本电池使用报告

    CMD 下 powercfg /batteryreport /output “C:\battery_report.html” powercfg 参数 /LIST./L          列出所有电源方 ...

  6. [RN] React Native 查看console打印出来的内容

    我们在调试React Native 程序的时候,经常会用到Js的打印语句Console.log等 但我们一脸蒙逼的时候,启动的时候完全看不到打印的内容在哪儿呢??? 原来还要在命令行下输入一个语句才能 ...

  7. 查看内核打印信息指令dmesg

    linux系统启动的时候打印的的信息非常重要,有时候需要看这些信息但是又不想重启,可以用dmesg这条指令.

  8. loadrunner (一)如何查看分析、报告结果

  9. tomcat动态查看服务器打印日志

    [root@localhost ~]# cd /usr/local/tomcat/logs [root@localhost logs]# tail -f catalina.out   FROM:htt ...

随机推荐

  1. substring常用的两种方法

    1.public String substring(int beginIndex, int endIndex) 第一个参数int为开始的索引,对应String数字中的开始位置, 第二个参数是截止的索引 ...

  2. Activit单元i测试(与spring集成测试)

    1.测试 eclipse下安装activiti插件以及maven 右键新建activiti project(这时会自动创建pom依赖以及activiti.cfg.xml,但还不是maven项目) 选中 ...

  3. Amazon DynamoDB

  4. 【笔记篇】C#笔记2

    返回目录:目录请戳这里~ C#数组 基本概念不提.. int[] a; bool[] b = new bool[10]; float[] c = {0.5, 57.0, 233.3, 12345.67 ...

  5. [USACO2005 nov] Grazing on the Run【区间Dp】

    Online Judge:bzoj1742,bzoj1694 Label:区间Dp 题目描述 John养了一只叫Joseph的奶牛.一次她去放牛,来到一个非常长的一片地,上面有N块地方长了茂盛的草.我 ...

  6. windows 内核下获取进程路径

    windows 内核下获取进程路径 思路:1):在EPROCESS结构中获取.此时要用到一个导出函数:PsGetProcessImageFileName,申明如下: NTSYSAPI UCHAR *  ...

  7. 0819NOIP模拟测试赛后总结

    这次挂得很悲伤. T1.T3我都想到正解了…… 结果T1少看了个条件:20%保证ai互不相等.以为100%…… 然后挂到了20分,赛后加了个set不到1分钟就A掉了.. T2把分骗满跑路. T3sb线 ...

  8. hession RMI 远程调用

    /** * * @author administror * 在java中,需要去extends 继承java.rmi.Remote 接口,才能称为在于服务器流的远程对象. * 各客服端调用 * */p ...

  9. css3中 百分比宽度减去固定宽度的写法

    div{ /*实现了宽度为父容器宽度减去固定的300像素*/ width:-webkit-calc(100% - 300px); width:-moz-calc(100% - 300px); widt ...

  10. jquery 判断当前设备是PC端还是移动端

    $(function(){ var system = { win: false, mac: false, xll: false, ipad:false }; //检测平台 var p = naviga ...