查看报表
JasperReport提供了一个内置的浏览器观看原始格式生成的报表。这是一个基于Swing的组件和其他Java应用程序可以无需将文档导出为其他格式,以便查看或打印此集成组件。net.sf.jasperreports.view.JRViewer类表示这个可视组件。这个类也可以被定制为每个应用程序的需要,通过继承它。
JasperReports也有用来查看报表的可视化组件Swing应用程序。此应用程序可以帮助在相同的格式查看报表为*.jrprint就产生了。这个Swing应用程序是在类net.sf.jasperreports.view.JasperViewer实现。要使用此功能,我们可以把这个包成一个Ant目标,以查看报表。
jasperreport初级中文学习教程:[6]查看报告_jasperreport
下面的示例演示如何查看使用JasperViewer类的报表。
让我们来写一个报告模板。在JRXML文件(C:oolsjasperreports-5.0.1estjasper_report_template.jrxml)的内容如下:
<?xml?version="1.0"?encoding="UTF-8"?>
<queryString>
<![CDATA[]]>
</queryString>
<fieldname="country">
<fieldDescription><![CDATA[country]]></fieldDescription>
</field>
<fieldname="name">
<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>
<textFieldExpression>
?????????<![CDATA[$F{country}]]>
</textFieldExpression>
</textField>
<textField>
<reportElementx="0"y="0"width="136"height="15"/>
<textElementtextAlignment="Center"
verticalAlignment="Middle"/>
<textFieldExpression>
<![CDATA[$F{name}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
写一个主类文件JasperReportFill.java,它从类(DataBeanList)得到的java?bean的集合,并将其传递到Jasper报表引擎,填补了报告模板。把它保存到目录?C:oolsjasperreports-5.0.1estsrccomyiibai.
jasperreport初级中文学习教程:[6]查看报告_jasperreport
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();
}
}
}
导入文件?-?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>
jasperreport初级中文学习教程:[6]查看报告_jasperreport
我们可以使用net.sf.jasperreports.engine.JasperPrintManager类打印的JasperReports类库生成的文件(在他们的专有格式i.eJasperPrint对象)。这是依赖于Java2?API打印一个假象类。我们还可以打印文档,一旦JasperReport的文档导出为其他格式,如HTML或PDF。www.yiibai.com
下面的代码演示报表的打印。让我们更新现有的类JasperReportFill。我们将使用JasperPrintManager.printReport()方法。此方法需要源文件名.jrprint(这里我们通过我们在上一步生成的使用方法JasperFillManager.fillReportToFile())作为第一个参数。第二个参数是布尔值,用于显示标准打印对话框(我们将其设置为true这里)。
<?xml?version="1.0"?encoding="UTF-8"?>
<projectname="JasperReportTest"default="executereport"basedir=".">
<importfile="baseBuild.xml"/>
<targetname="executereport"
depends="compile,compilereportdesing,run">
<echomessage="Im?here"/>
</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>
同为比较常用的报表工具,FineReport的报表查看和打印不需要编码实现,FineReport中所有的报表代码细节被隐藏,呈现出的是是可视化的设计过程。
在FineReport中,查看报表只需要点击?报表设计器中?的预览报表按钮,以分页预览为例,讲述一下FineReport中报表的查看效果和设置:
jasperreport初级中文学习教程:[6]查看报告_jasperreport
1.描述
分页预览即普通预览模式,FineReport的默认预览方式,一般在只需要查看报表数据用于分析的时候使用。
下面我们以内置的GettingStarted.cpt模板为例,来看看分页预览的使用方式以及其一些属性的设置。
2.分页预览
直接打开设计器,双击打开GettingStarted.cpt模板,点击设计器界面上的预览按钮访问报表,如下图:
注:该按钮下有三个预览方式可选:填报预览、数据分析和分页预览,默认方式为分页预览。
点击分页预览之后,在浏览器端就会打开一张报表,如下图:
3.分页预览设置
在设计器中点击模板>模板web属性>分页预览设置,就可以对分页预览界面进行设置,包括报表显示位置、页面和工具栏。
1.报表打印机制
各种打印的运行机制,都是选择打印时,先根据报表内容,在服务器的内存中将页面中的内容全部生成完毕,即生成对应格式的对象;然后再由serverlet直接推送给客户端,最后根据选择的打印方式打印出来。
2.报表打印方式
FineReport打印方式分为客户端打印和服务器端打印:
服务器端打印:使用报表应用所在的服务器,连接的打印机进行打印;
客户端打印:使用本地连接的打印机进行打印;又分为Flash打印、PDF打印以及Applet打印。
jasperreport初级中文学习教程:[6]查看报告_jasperreport
3.各打印方式的比较
为了更方便理解各打印方式,下面列出现有报表的各打印方式的对比说明。
4.各打印方式的优缺点对比
5.各打印方式的使用
5.1直接使用报表工具栏中的打印按钮
用户系统通常只需要一种打印方式,不需要所有打印方式按钮都显示出来,此时可以自定义报表工具栏。
选择模板>模板web属性>分页预览设置,选择为该模板单独设置,勾选工具栏,双击工具栏上的打印按钮或者选中打印按钮,点击设置(如果工具栏上没有打印按钮,则双击按钮框中的打印按钮,使之添加到工具栏中),选择需要显示的打印方式,如下图:
在各种预览方式旁有编辑工具栏设置按钮,或者在服务器>服务器配置中给所有模板统一设置:
注:如果不是在分页预览展示端打印,而是填报预览展示端打印,则选择模板>模板web属性>填报页面设置,其余设置相同。分析预览同理。
jasperreport初级中文学习教程:[6]查看报告_jasperreport
5.2自定义按钮调用打印方法
不用报表内置的工具栏,用户自定义按钮,通过js调用打印方法。详见js调用FR打印方法文档。