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

  • 报表模板:这是实际的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) 的内容如下:

  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)。这个类定义了两个字符串对象名称和国家。把它保存到目录 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对象的集合。这是进一步传递到报表引擎,生成报表。在这里,我们添加在列表 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. }

编写一个类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. 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. }

生成报表

现在,我们将编译并使用我们的定期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. CSS 实现自适应正方形

    在处理移动端页面时,我们有时会需要将banner图做成与屏幕等宽的正方形以获得最佳的体验效果,比如,商品详情页, 方法1.CSS3 vw单位 CSS3 中新增了一组相对于可视区域百分比的长度单位 vw ...

  2. Spring中AOP的实现

    Spring中整合了AOP的功能,虽然有不足,没有专门做AOP框架的那么完美,但是用一用感觉还是不错的 一些概念: AOP 面向切面编程 aspect 切面/切面类(我个人认为一个真正被解耦的程序,切 ...

  3. idea激活破解

    下载链接:https://pan.baidu.com/s/1BADk1MCm0YxtB6zoX0DivA 提取码 ze9m将破解补丁放到bin文件中jetbrains-all.jar 在这俩个文件最后 ...

  4. <Django> MVT三大块之Models(模型)

    1.ORM(对象-关系-映射)---面向对象,不需要面向SQL语句 根据对象的类型生成表结构 将对象.列表的操作,转化成SQL语句 将SQL语句查询的结果转化成对象.列表 目的:实现数据模型与数据库的 ...

  5. READING | 我是一只IT小小鸟

    “世界是如此的熙熙攘攘,让年轻的心找不到方向,但这些人是不能小看的啊,如果他们开始敲打自己的命令行.” “知之者不如好知者,好之者不如乐之者”,很多IT界的优秀人才都对计算机技术或者IT技术有着浓厚的 ...

  6. Java中Arrys数组常用的方法

    Arrys常用方法 1.toString() Arrays.toString(arr)        //打印数组的内容,观察数组元素的值 2.sort() Arrays.sort(arr);     ...

  7. layui实现批量导入excal表

    layui实现多文件上传,并直接选中需要上传文件的类型 //拖拽上传 upload.render({ elem : '#import', size: , //限制文件大小,单位 KB accept: ...

  8. HDU - 6128

    题意略: 题解:二次剩余板子题 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pra ...

  9. Flask从入门到入土

    一.flask介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对 ...

  10. pytorch 入门指南

    两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...