jasperreports初级教程:[6]查看和打印报告

报表填充过程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)的内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<queryString>

<![CDATA[]]>

</queryString>

<fieldname="country"class="java.lang.String">

<fieldDescription><![CDATA[country]]></fieldDescription>

</field>

<fieldname="name"class="java.lang.String">

<fieldDescription><![CDATA[name]]></fieldDescription>

</field>

<columnHeader>

<bandheight="23">

<staticText>

<reportElementmode="Opaque"x="0"y="3"width="535"

height="15"backcolor="#70A9A9"/>

<box>

<bottomPenlineWidth="1.0"lineColor="#CCCCCC"/>

</box>

<textElement/>

<text><![CDATA[]]> </text>

</staticText>

<staticText>

<reportElementx="414"y="3"width="121"height="15"/>

<textElementtextAlignment="Center"

verticalAlignment="Middle">

<fontisBold="true"/>

</textElement>

<text><![CDATA[Country]]></text>

</staticText>

<staticText>

<reportElementx="0"y="3"width="136"height="15"/>

<textElementtextAlignment="Center"

verticalAlignment="Middle">

<fontisBold="true"/>

</textElement>

<text><![CDATA[Name]]></text>

</staticText>

</band>

</columnHeader>

<detail>

<bandheight="16">

<staticText>

<reportElementmode="Opaque"x="0"y="0"width="535"

height="14"backcolor="#E5ECF9"/>

<box>

<bottomPenlineWidth="0.25"lineColor="#CCCCCC"/>

</box>

<textElement/>

<text><![CDATA[]]> </text>

</staticText>

<textField>

<reportElementx="414"y="0"width="121"height="15"/>

<textElementtextAlignment="Center"

verticalAlignment="Middle">

<fontsize="9"/>

</textElement>

<textFieldExpressionclass="java.lang.String">

         <![CDATA[$F{country}]]>

</textFieldExpression>

</textField>

<textField>

<reportElementx="0"y="0"width="136"height="15"/>

<textElementtextAlignment="Center"

verticalAlignment="Middle"/>

<textFieldExpressionclass="java.lang.String">

<![CDATA[$F{name}]]>

</textFieldExpression>

</textField>

</band>

</detail>

</jasperReport>

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

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

package

publicclassDataBean{

privateString name;

privateString country;

publicString getName(){

return name;

}

publicvoid setName(String name){

this.name = name;

}

publicString getCountry(){

return country;

}

publicvoid setCountry(String country){

this.country = country;

}

}

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

package

import java.util.ArrayList;

publicclassDataBeanList{

publicArrayList<DataBean> getDataBeanList(){

ArrayList<DataBean> dataBeanList =newArrayList<DataBean>();

      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.

    */

privateDataBean produce(String name,String country){

DataBean dataBean =newDataBean();

      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.JasperFillManager;

import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

publicclassJasperReportFill{

@SuppressWarnings("unchecked")

publicstaticvoid main(String[] args){

String sourceFileName =

"c://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";

DataBeanListDataBeanList=newDataBeanList();

ArrayList<DataBean> dataList =DataBeanList.getDataBeanList();

JRBeanCollectionDataSource beanColDataSource =

newJRBeanCollectionDataSource(dataList);

Map parameters =newHashMap();

try{

JasperFillManager.fillReportToFile(

         sourceFileName,

         parameters,

         beanColDataSource);

}catch(JRException e){

         e.printStackTrace();

}

}

}

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

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

<?xml version="1.0" encoding="UTF-8"?>

<projectname="JasperReportTest"default="viewFillReport"basedir=".">

<importfile="baseBuild.xml"/>

<targetname="viewFillReport"depends="compile,compilereportdesing,run"

description="Launches the report viewer

      to preview the report stored in the .JRprint file.">

<javaclassname="net.sf.jasperreports.view.JasperViewer"fork="true">

<argvalue="-F${file.name}.JRprint"/>

<classpathrefid="classpath"/>

</java>

</target>

<targetname="compilereportdesing"

description="Compiles the JXML file and

      produces the .jasper file.">

<taskdefname="jrc"

classname="net.sf.jasperreports.ant.JRAntCompileTask">

<classpathrefid="classpath"/>

</taskdef>

<jrcdestdir=".">

<src>

<filesetdir=".">

<includename="*.jrxml"/>

</fileset>

</src>

<classpathrefid="classpath"/>

</jrc>

</target>

</project>

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


jasperreports初级教程:[6]查看和打印报告

打印报表

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

打印生成的报告

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

同为比较常用的报表工具,FineReport的报表查看和打印不需要编码实现,FineReport中所有的报表代码细节被隐藏,呈现出的是是可视化的设计过程。

在FineReport中,查看报表只需要点击 报表设计器中 的预览报表按钮,以分页预览为例,讲述一下FineReport中报表的查看效果和设置:

查看

1.描述

分页预览即普通预览模式,FineReport的默认预览方式,一般在只需要查看报表数据用于分析的时候使用。

下面我们以内置的GettingStarted.cpt模板为例,来看看分页预览的使用方式以及其一些属性的设置。

2.分页预览

直接打开设计器,双击打开GettingStarted.cpt模板,点击设计器界面上的预览按钮访问报表,如下图:


注:该按钮下有三个预览方式可选:填报预览、数据分析和分页预览,默认方式为分页预览。

点击分页预览之后,在浏览器端就会打开一张报表,如下图:


jasperreports初级教程:[6]查看和打印报告

3.分页预览设置

在设计器中点击模板>模板web属性>分页预览设置,就可以对分页预览界面进行设置,包括报表显示位置、页面和工具栏。

报表打印

1.报表打印机制

各种打印的运行机制,都是选择打印时,先根据报表内容,在服务器的内存中将页面中的内容全部生成完毕,即生成对应格式的对象;然后再由serverlet直接推送给客户端,最后根据选择的打印方式打印出来。

2.报表打印方式

FineReport打印方式分为客户端打印和服务器端打印:

服务器端打印:使用报表应用所在的服务器,连接的打印机进行打印;

客户端打印:使用本地连接的打印机进行打印;又分为Flash打印、PDF打印以及Applet打印。

3.各打印方式的比较

为了更方便理解各打印方式,下面列出现有报表的各打印方式的对比说明。


jasperreports初级教程:[6]查看和打印报告

4.各打印方式的优缺点对比


5.各打印方式的使用

5.1直接使用报表工具栏中的打印按钮

用户系统通常只需要一种打印方式,不需要所有打印方式按钮都显示出来,此时可以自定义报表工具栏。

选择模板>模板web属性>分页预览设置,选择为该模板单独设置,勾选工具栏,双击工具栏上的打印按钮或者选中打印按钮,点击设置(如果工具栏上没有打印按钮,则双击按钮框中的打印按钮,使之添加到工具栏中),选择需要显示的打印方式,如下图:


jasperreports初级教程:[6]查看和打印报告

相关内容

  1. jasperreport初级教程:[6]查看和打印报告

    报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括在本章中.查看报表JasperReport提供了一个内置的浏览器观看原始格式生成的报表.这是一个基 ...

  2. jasperreports教程:[6]查看和打印报告

    jasperreports教程:[6]查看和打印报告工具/原料jasperreports报表方法/步骤报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将 ...

  3. jasperreport教程:[6]查看和打印报告

    jasperreport教程:[6]查看和打印报告工具/原料jasperreport报表方法/步骤报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括 ...

  4. jasperreport初级中文学习教程:[6]查看报告

    报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括在本章中.查看报表JasperReport提供了一个内置的浏览器观看原始格式生成的报表.这是一个基

  5. jasperreports初级中文学习教程:[6]打印报告

    报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括在本章中.查看报表编写一个类DataBeanList.java具有业务逻辑生成java bean对 ...

  6. jasperreports中文学习入门教程:[6]打印报告

    jasperreports中文学习入门教程:[6]查看和打印报告工具/原料jasperreports报表方法/步骤报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件 ...

  7. jasperreports中文教程:[6]查看和打印报告

    报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括在本章中.查看报表JasperReport提供了一个内置的浏览器观看原始格式生成的报表.这是一个基 ...

  8. jasperreports中文学习教程:[6]查看和打印报告

    报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括在本章中.查看报表JasperReport提供了一个内置的浏览器观看原始格式生成的报表.这是一个基 ...

  9. jasperreport中文学习教程:[6]查看和打印报告

    报表填充过程JasperPrint对象的输出可以使用内置的浏览器组件来查看,打印或导出到更多的流行的文件格式,如PDF,HTML,RTF,XLS,ODT,CSV或XML.Jasper文件查看和打印将包括在本章中.查看报表JasperReport提供了一个内置的浏览器观看原始格式生成的报表.这是一个基 ...