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

  • 报表模板:这是实际的JasperReport文件

  • 报告参数:这些所传递的报表填充时间给引擎基本上都是命名的值。我们将在报表参数章节讨论。

  • 数据源:我们可以从一系列像一个SQL查询,XML文件,CSV文件,一个HQL(Hibernate查询语言)查询,Java Beans的集合等数据源的填补Jasper这个文件将详细讨论在报表数据源的篇章。

这个过程产生的输出。jrprint是一个文档随时查看,打印或导出为其他格式。外观类net.sf.jasperreports.engine.JasperFillManager通常用于填充一个报表模板与数据。这个类有各种fillReportXXX()方法,填补报表模板(模板可以位于磁盘上,从输入流采集,或直接提供的内存)。

主要有两类在此外观类fillReportXXX()方法:

  1. 第一种类型,接收java.sql.Connection对象作为第三个参数。大多数情况下报表都充满了从关系数据库中的数据。这是通过:

    • 通过JDBC连接到数据库。

    • 包括报表模板中的SQL查询。

    • JasperReports引擎使用传入的连接并执行SQL查询。

    • 因此,一个报表数据源产生填充的报告。

  2. 第二类,收到net.sf.jasperreports.engine.JRDataSource对象,当提供其他形式的数据来填补。

填充报告模板

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="jasper_report_template" language="groovy" pageWidth="595"
pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20"> <queryString>
<![CDATA[]]>
</queryString>
<field name="country" class="java.lang.String">
<fieldDescription><![CDATA[country]]></fieldDescription>
</field>
<field name="name" class="java.lang.String">
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<columnHeader>
<band height="23">
<staticText>
<reportElement mode="Opaque" x="0" y="3" width="535"
height="15" backcolor="#70A9A9" />
<box>
<bottomPen lineWidth="1.0" lineColor="#CCCCCC" />
</box>
<textElement />
<text><![CDATA[]]> </text>
</staticText>
<staticText>
<reportElement x="414" y="3" width="121" height="15" />
<textElement textAlignment="Center"
verticalAlignment="Middle">
<font isBold="true" />
</textElement>
<text><![CDATA[Country]]></text>
</staticText>
<staticText>
<reportElement x="0" y="3" width="136" height="15" />
<textElement textAlignment="Center"
verticalAlignment="Middle">
<font isBold="true" />
</textElement>
<text><![CDATA[Name]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="16">
<staticText>
<reportElement mode="Opaque" x="0" y="0" width="535"
height="14" backcolor="#E5ECF9" />
<box>
<bottomPen lineWidth="0.25" lineColor="#CCCCCC" />
</box>
<textElement />
<text><![CDATA[]]> </text>
</staticText>
<textField>
<reportElement x="414" y="0" width="121" height="15" />
<textElement textAlignment="Center"
verticalAlignment="Middle">
<font size="9" />
</textElement>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{country}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="0" width="136" height="15" />
<textElement textAlignment="Center"
verticalAlignment="Middle" />
<textFieldExpression class="java.lang.String">
<![CDATA[$F{name}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>

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

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

package com.yiibai;

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对象的集合。这是进一步传递到报表引擎,生成报表。在这里,我们添加在列表 DataBean进行对象。把它保存到目录C:\tools\jasperreports-5.0.1\test\src\com\yiibai.

package com.yiibai;

import java.util.ArrayList;

public class DataBeanList {
public ArrayList<DataBean> getDataBeanList() {
ArrayList<DataBean> dataBeanList = new ArrayList<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.
*/
private DataBean produce(String name, String country) {
DataBean dataBean = new DataBean();
dataBean.setName(name);
dataBean.setCountry(country);
return dataBean;
}
}

编写一个类DataBeanList.java具有业务逻辑生成java bean对象的集合。这是进一步传递到Jasper报表引擎,生成报告。在这里,我们添加在列表4 DataBean进行对象。把它保存到目录 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; 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<DataBean> dataList = DataBeanList.getDataBeanList(); JRBeanCollectionDataSource beanColDataSource =
new JRBeanCollectionDataSource(dataList); Map parameters = new HashMap();
try {
JasperFillManager.fillReportToFile(
sourceFileName,
parameters,
beanColDataSource);
} catch (JRException e) {
e.printStackTrace();
}
}
}

生成报表

现在,我们将编译并使用我们的定期Ant构建过程执行这些文件。 build.xml文件如下图所示:

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

 

JasperReport填充报表6的更多相关文章

  1. 使用Japserreport填充报表数据(3)

    E中以PDF文件的格式显示静态的中文字符串,在大多数的情况下,打印的数据来自于一些变量,在JasperReports工具中传递数据并填充到 报表只有两种方式,即使用Parameters参数和JRDat ...

  2. JasperReport导出报表8

    我们已经看到在前面的章节中,如何打印和查看的JasperReport生成的文档.在这里,我们将看到如何在其他格式,如PDF,HTML和XLS转换或导出这些报告. Facade类net.sf.jaspe ...

  3. JasperReport编译报表设计5

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

  4. JasperReport子报表参数传递

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

  5. JasperReport报表导出踩坑实录

    写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...

  6. 利用JasperReport+iReport进行Web报表开发

    用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...

  7. 使用JasperReport+iReport进行Web报表开发

    使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...

  8. JasperReport报表中输出Excel时,部分列不显示的问题

    JasperReport开源报表功能强大,是我们WEB系统中做报表开发的一个强有力的工具,上手也比较简单.我碰到的问题是进行报表输出时,在html网页中显示正常,但如果导出为Excel时,部分列不显示 ...

  9. JAVA实用案例之文件导出(JasperReport踩坑实录)

    写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...

随机推荐

  1. 宇宙最强 IDE:VS 2019 正式发布

    作者:局长 来源:www.oschina.net/news/105629/ 如约而至,微软已于今天推出 Visual Studio 2019 正式版,一同发布的还有 Visual Studio 201 ...

  2. selenium基础(控制浏览器)

    python基础(控制浏览器) 控制浏览器 控制浏览器窗口大小 设置浏览器屏幕大小方法:set_window_size() 浏览器最大化:maximize_window() 浏览器最小化:minimi ...

  3. Amazon AWS EC2存储

  4. https://webpack.js.org/plugins/

    有问题还是看源码 ,看官方文档吧,整一晚上终于整明白了

  5. jmeter做bbs作业时提示404错误

    在用jemter做bbs作业时候,注册成功后会跳转到主页,在写主页的脚本的时候,将fiddler抓到的url复制到路径下方“/bbs/forum.php”,但是第一次复制的时候在/bbs/forum. ...

  6. 0815NOIP模拟测试赛后总结

    立个flag:今天一定改完最少两道题然后认认真真写题解. 8/16 upd:果然flag不要立太狠…… 赛时状态: 赛后的老师:这套题我就没想让你上100分. 120分的天皇大神撇了撇嘴. 众人:…… ...

  7. 莫烦pytorch学习笔记(八)——卷积神经网络(手写数字识别实现)

    莫烦视频网址 这个代码实现了预测和可视化 import os # third-party library import torch import torch.nn as nn import torch ...

  8. eclipse快捷大全

    Eclipse常用快捷键 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2 显示搜索 ...

  9. PAT甲级——A1091 Acute Stroke【30】

    One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...

  10. eval(str)函数

    转载:地址于http://blog.csdn.net/SeeTheWorld518/article/details/47983511 eval(str)函数很强大,官方解释为:将字符串str当成有效的 ...