📅  最后修改于: 2020-11-16 07:50:15             🧑  作者: Mango
报表填充过程的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)如下所示-
接下来,让我们将Java数据对象(Java Bean)的集合传递给JasperReports Engine,以填充此已编译的报告。
编写一个POJO DataBean.java,它代表数据对象(Java bean)。此类定义了两个String对象,即“ name”和“ country”。将其保存到目录C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint 。
package com.tutorialspoint;
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;
}
}
编写一个DataBeanList.java类,该类具有用于生成Java Bean对象集合的业务逻辑。这进一步传递给JasperReports引擎,以生成报告。在这里,我们在列表中添加了4个DataBean对象。将其保存到目录C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint 。
package com.tutorialspoint;
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集合并将其传递给JasperReports引擎,以填充报告模板。将其保存到目录C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint 。
package com.tutorialspoint;
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;
public class JasperReportFill {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
String sourceFileName =
"c://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";
DataBeanList DataBeanList = new DataBeanList();
ArrayList dataList = DataBeanList.getDataBeanList();
JRBeanCollectionDataSource beanColDataSource = new
JRBeanCollectionDataSource(dataList);
Map parameters = new HashMap();
try {
JasperFillManager.fillReportToFile(
sourceFileName, parameters, beanColDataSource);
} catch (JRException e) {
e.printStackTrace();
}
}
}
让我们将目标viewFillReport写入build.xml文件。 build.xml文件如下-
导入文件-baseBuild.xml是从“环境设置”一章中选取的,应与build.xml放在同一目录中。
接下来,让我们打开命令行窗口并转到build.xml所在的目录。最后,执行命令ant -Dmain-class = com.tutorialspoint.JasperReportFill (viewFillReport是默认目标)。结果,我们看到一个JasperViewer窗口,如下图所示:
我们可以使用net.sf.jasperreports.engine.JasperPrintManager类打印由JasperReports库生成的文档(采用其专有格式,即JasperPrint对象)。这是一个依赖Java 2 Printing API的Facade类。 JasperReport文档导出为其他格式(例如HTML或PDF)后,我们也可以打印文档。
以下代码演示了报告的打印。让我们更新现有的类JasperReportFill。我们将使用JasperPrintManager.printReport()方法。此方法采用源文件名(此处传递.jrprint文件,该文件是在上一步中使用JasperFillManager.fillReportToFile()方法生成的)作为第一个参数。第二个参数是用于显示标准打印对话框的布尔值(我们在此处将其设置为true )。
package com.tutorialspoint;
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.JasperPrintManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
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){
JasperPrintManager.printReport( printFileName, true);
}
} catch (JRException e) {
e.printStackTrace();
}
}
}
现在,让我们将该文件保存到目录C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint 。我们将使用ANT编译并执行此文件。 build.xml的内容如下所示-
接下来,让我们打开命令提示符,然后转到build.xml所在的目录。最后,执行命令ant -Dmain-class = com.tutorialspoint.JasperReportPrint 。结果,出现一个打印对话框。单击确定以打印文档。