JasperReports报表数据源10
数据源的结构数据容器。同时生成报告,Jasper报表引擎获得来自数据源的数据。数据可以从数据库,XML文件,对象数组和集合中的对象来获得。我们将在本章填充报告所看到的fillReportXXX()方法,预计将收到该报告的数据源其以填充,在net.sf.jasperreports.engine.JRDataSource对象或一个java.sql.Connection中的形式(当报表数据在关系数据库中找到)。
JRDataSource接口只有两个方法,这应该被实现:
- public boolean next() throws JRException;
- public Object getFieldValue(JRField jrField) throws JRException;
在报表填充时间,这种方法是通过遍历数据时调用的数据源对象上的报告引擎。
此方法在当前数据源记录为每个报表字段的值。
从数据源中检索数据的唯一方法是通过使用报表字段。有一个JRDataSource接口的几个默认的实现,根据不同的数据源中的记录被获得的方式。
数据源的实现
下表总结了数据源和它们的实现类。
| Datasource | Implementation Class |
|---|---|
| JDBC | net.sf.jasperreports.engine.JRResultSetDataSource |
| JavaBean | net.sf.jasperreports.engine.data.JRBeanCollectionDataSource, net.sf.jasperreports.engine.data.JRBeanArrayDataSource |
| Map-based | net.sf.jasperreports.engine.data.JRMapArrayDataSource, net.sf.jasperreports.engine.data.JRMapCollectionDataSource |
| TableModel | net.sf.jasperreports.engine.data.JRTableModelDataSource |
| XML | net.sf.jasperreports.engine.data.JRXmlDataSource |
| CSV | net.sf.jasperreports.engine.data.JRCsvDataSource |
| XLS | net.sf.jasperreports.engine.data.JRXlsDataSource |
| Empty | net.sf.jasperreports.engine.JREmptyDataSource |
JDBC数据源
JRResultSetDataSource类关联入一个java.sql.ResultSet对象。这是当报表数据从关系数据库中提取最常用的数据源实现。如果ajava.sql.Connection传递给引擎来代替,它首先执行相关的查询,并将该返回java.sql.ResultSet中的对象在一个JRResultSetDataSource实例。
JAVABEAN数据来源
JRBeanArrayDataSource类和JRBeanCollectionDataSource表示实现,可以分别包装的JavaBean对象的数组或集合。数组或集合中的每个对象都将被视为对这种类型的数据源中的一个记录。一个特定的JavaBean属性和相应的报表字段之间的映射是通过命名约定进行。报表字段的名称必须是相同的所指定的JavaBeans的规范JavaBean属性的名称。
在本教程中的所有例子中,我们使用JRBeanCollectionDataSource。
基于MAP的数据来源
如果父级应用程序已经存储在内存中的java.util.Map对象提供的申报数据的实现类JRMapArrayDataSource和JRMapCollectionDataSource非常有用。被包装的数组或集合中的每个映射对象被认为是数据源中的一个虚拟的记录,每个报表字段的值从映射中使用报表字段名作为键提取。
TableModel的数据来源
在许多客户端应用程序,数据以表格形式显示。在许多应用中常见的需求是允许用户打印该表格形式的报告。实现类JRTableModelDataSource使生成的表格格式的Swing应用程序报告的任务。这个类封装了一个javax.swing.table.TableModel对象。列在包装的TableModel对象可以通过他们的名字或他们的基于0索引来访问。
XML数据源
类JRXmlDataSource是基于DOM,它使用XPath表达式来选择XML文档数据的数据源的实现。 XML数据源中的记录是通过XPath表达式选择的节点元素表示。字段值是由每个记录使用由字段描述(JRXML<fieldDescription>元素)所提供的XPath表达式检索。
XPath是用于导航XML文档的属性和元素的语言。有关XPath更多信息可以在这里找到http://www.w3.org/TR/xpath.
CSV数据来源
JRCsvDataSource 代表了从结构化文本文件中检索其数据的数据源的实现,通常为CSV。字段值是正在使用他们的列索引检索。
xls数据来源
JRXlsDataSource 代表其检索的Excel文件的数据的数据源的实现。报表字段映射为这个数据源的实现也是基于字段列索引。
空数据来源
类JREmptyDataSource,模拟与内部虚拟空的记录给定数量的数据源。它是由用户界面的工具来提供基本的报表预览功能,或在特殊报告模板,或用于测试和调试目的。
重绕数据源
net.sf.jasperreports.engine.JRRewindableDataSource扩展的基本JRDataSourceinterface。它增加了只有一个方法为MoveFirst()到接口。这种方法的目的是将光标移动到数据源中的第一个元素。
与放置在带内子报表不允许拆分由于isSplitAllowed=“false”的设定,并且没有足够的空间,在当前页上对要呈现的子报表工作时,重绕的数据源是有用的。
以上所有数据源的实现是可回退除JRResultSetDataSource,因为它不支持移动记录指针回来。这对只有当该数据源是用它传递给子报表之前手动换一个java.sql.ResultSet中的一个问题。这是没有问题,如果SQL查询驻留在子报表模板,该引擎将在下一个页面上重新启动子报表时,再次执行它。
数据源提供者
JasperReports库有一个接口net.sf.jasperreports.engine.JRDataSourceProvider。这有助于创建和处理数据源对象。当创建使用GUI工具报表模板,则需要自定义报表的数据源的特殊工具。JRDataSourceProvider是为了堵塞自定义数据源到设计工具的标准方法。自定义实现该接口应实现以下方法,使创建和配置数据源对象和方法,上面列出数据源如果可能的话,里面可用的报表字段:
public boolean supportsGetFieldsOperation(); public JRField[] getFields(JasperReport report)
throws JRException, UnsupportedOperationException; public JRDataSource create(JasperReport report) throws JRException; public void dispose(JRDataSource dataSource) throws JRException;
JasperReports报表数据源10的更多相关文章
- JasperReports报表区段14
我们将在本章开始,一个简单的报表模板的结构看.依样画葫芦JasperReports的结构报表模板归类到多个区段.部分是有规定的高度,并且可以包含像直线,矩形,图像或文本字段对象报表的部分. 通过提供的 ...
- ActiveReports报表数据源:运行时数据源
ActiveReports 支持在设计时和运行时设置报表数据源,本文将重点介绍如何在运行时为区域报表和RDL/页面报表设置报表数据源. ·第一步: 在工程中创建一个名为 SectionReport_D ...
- JasperReports报表组15
组在JasperReports的协助组织对报告的数据以逻辑方式.报告组代表连续记录的数据源中有一些共同点,比如某个报表字段的值的序列.报告组由<group>元素定义.一个报表可以有任意数量 ...
- JasperReports报表表达式12
报表表达式是JasperReports使我们能够显示在报表上的数据计算的强大功能.计算出数据不是一个静态数据,并且不受特别的报表参数或数据源字段传递的数据.报表表达式是由组合报表参数,字段和静态数据. ...
- JasperReports报表字段11
报表字段是代表数据源和报表模板之间的数据映射元素.字段可以在报告中的表达式进行组合,以获得所需的输出.报表模板可以包含零个或更多的<field>元素.当声明报表字段,数据源应提供相应的数据 ...
- JasperReports报表变量13
报表变量是建立在报表表达式之上的特殊对象.报表变量简化以下任务: 报表,其中大量使用在整个报告模板表达式.这些表达式可以通过使用报表变量只能声明一次. 计数,求和,平均,最低,最高,方差等:报表变量可 ...
- FastReport.Net中使用列表和数组作为报表数据源
大多数现代报告工具允许您使用几乎任何数据库,然而,并不是所有报表工具都能以一个数据源的列表或数组来工作.本文中将展示如何使用FastReport .Net报表工具来实现. 请注意以下重要几点: 清单中 ...
- winform 子报表数据源赋值
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(&qu ...
- JasperReports® Library | Jaspersoft Community
JasperReport报表导出踩坑实录 - 小卖铺的老爷爷 - 博客园https://www.cnblogs.com/laoyeye/p/7707149.html jasperreport_百度百科 ...
随机推荐
- js比较常用的
1. <a href="javascript:void(0);" id="div1_bu" >点击链接可以删除div2</a> 超链接的 ...
- vuex的使用入门-官方用例
store/index.js import Vue from 'vue' import Vuex from 'vuex'; // 使用vuex Vue.use(Vuex) const store = ...
- Python调用DLL动态链接库——ctypes使用
最近要使用python调用C++编译生成的DLL动态链接库,因此学习了一下ctypes库的基本使用. ctypes是一个用于Python的外部函数库,它提供C兼容的数据类型,并允许在DLL或共享库中调 ...
- Python全栈开发:线程代码实例
#进程与线程的关系 """ 多进程(主进程,子进程): 优点:能同时利用多个CPU,进行多个操作,提高效率. 缺点:耗费内存资源(进程要开辟内存空间),进程不是越多越好, ...
- 容斥原理——hdu2204dfs深搜
/* 枚举素数幂p 然后求k^p<=n 的 k的个数 因为 k^p1*p2==k^p2*p1,所以这两种情况是多算的,所以要进行容斥 减去两个质数幂相乘的,再加上三个质数幂相乘的 因为2*3*5 ...
- Javascript简单算法
1.多维数组取其所有第几个值组成新数组 例如 [[, , ], [, , ], [, , ]],我要标红的值 [[1, 3, 5], [2, 2, 2], [3, 3, 3]] let t = [[1 ...
- Java-MyBatis-MyBatis3-XML映射文件:参数
ylbtech-Java-MyBatis-MyBatis3-XML映射文件:参数 1.返回顶部 1. 参数 你之前见到的所有语句中,使用的都是简单参数.实际上参数是 MyBatis 非常强大的元素.对 ...
- Android之FrameLayout帧布局
1.简介 这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角; 帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看 ...
- day 42 02--CSS的继承性和层叠性
02--CSS的继承性和层叠性 本节目录 一 继承性 二 层叠性 三 层叠性权重相同处理 一 继承性 css有两大特性:继承性和层叠性 面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点 ...
- 关于c.toArray might (incorrectly) not return Object[] (see 6260652)的问题解答
最近学习jdk1.8源码时,发现ArrayList(Collection<? extends E> c)这个构造函数中,有句有意思的描述:c.toArray might (incorrec ...