JasperReports的简单介绍
来源:互联网 发布:手卷寿司吃法 知乎 编辑:程序博客网 时间:2024/06/05 20:07
简单介绍
JasperReports是世界上最流行的开源报告引擎。它是完全用Java编写的,它是能够使用的数据来自任何类型的数据源,并生成像素级的文档,可以查看、打印或导出在多种文档格式,包括HTML、PDF、Excel、OpenOffice和doc。JasperReports是一个用Java开发的开源的程序库,使用户能够透过它,利用Java语言来开发具有报告功能的程序。JasperReports的模版采用XML格式。iReport是开发JasperReports的图像换工具。
JasperReports可以通过多种数据源(XML、JavaBean、JDBC等)来生成多种格式的报表。这里使用JDBC连接数据库作为数据源,填充报表内容来产生数据。
产生JasperReports报表之前需要先创建报表模板,JasperReports采用XML的格式定义模板,模板基本分为如下几个部分:
- title
- pageHeader
- columnHeader
- detail
- columnFooter
- pageFooter
- lastPageFooter
- summary
表格的合计段,出现在整个报表的最后一页中的detail段的后面,一般用来统计报表中某一个或某几个字段的合计值。
使用iReport(4.0.2版本)开发report模板
1.打开iReport,选择需要产生报表的格式
2.选择报表存储位置
3.完成
4.进入到主界面后会看到整个报表分为几部分(即上面介绍的)
5.这时的数据源是空的,没有为报表指定任何数据源,我们这时要点击“小插头”按钮,添加数据源
6.这时会弹出一个对话框,可以看到这里提供了多种数据源,我们选择JDBC
7.这里填上数据库的连接信息
8.在数据源下拉列表中选择我们新加入的数据源
9.点击“向右拐剪头”这个按钮,来指定数据源中我们想获取的数据范围
10.在这个弹出的界面中可以看到可以根据SQL、JavaBean、CSV等方式来选取数据,我们选取SQL方式,输入正确的SQL语句后,可以看到表结构和部分数据,点击“OK”来保存
11.之后我们需要给报表的表头等位置加一些文字,这时拖动“Static Text”按钮到需要添加文字的文职
12.添加静态文字之后,我们需要把用SQL查出来的数据也添加到报表中,拖动“”按钮到Detail中,并修改$F{}中的变量名称,变量名称就是表的字段名称
13.之后我们点击“小榔头”按钮,编译这个报表,输出栏显示“Compilation running time ”时说明编译成功了,报表会被变成一个*.jasper的文件(之前的xml格式是jrxml)
14.此时,一个简单的报表模板就完成了,点击“Preview”来预览下这个报表
15.创建好的模板XML文件如下
<?xml version="1.0" encoding="UTF-8"?><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="test_report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"><property name="ireport.zoom" value="1.0"/><property name="ireport.x" value="0"/><property name="ireport.y" value="0"/><parameter name="PAN" class="java.lang.String"><defaultValueExpression><![CDATA[]]></defaultValueExpression></parameter><queryString><![CDATA[SELECT * FROM CARD WHERE PAN LIKE '%1%']]></queryString><field name="CARD_ID" class="java.math.BigDecimal"/><field name="PAN" class="java.lang.String"/><field name="PIN" class="java.lang.String"/><field name="CARD_STATUS_ID" class="java.math.BigDecimal"/><field name="CARD_TYPE_ID" class="java.math.BigDecimal"/><field name="PREV_CARD_ID" class="java.math.BigDecimal"/><field name="NEXT_CARD_ID" class="java.math.BigDecimal"/><field name="CURR_CARD_ID" class="java.math.BigDecimal"/><field name="ISSUE_DATE" class="java.sql.Timestamp"/><field name="EXPIRATION_DATE" class="java.sql.Timestamp"/><field name="FREEZE_DATE" class="java.sql.Timestamp"/><field name="BAD_PIN_COUNT" class="java.math.BigDecimal"/><field name="BAD_PIN_DATE" class="java.sql.Timestamp"/><field name="BAD_PIN_RESET_COUNT" class="java.math.BigDecimal"/><field name="BAD_PIN_RESET_DATE" class="java.sql.Timestamp"/><field name="MANUAL_ENTRIES_COUNT" class="java.math.BigDecimal"/><field name="MANUAL_ENTRIES_DATE" class="java.sql.Timestamp"/><field name="MANUAL_ENTRIES_RESET_COUNT" class="java.math.BigDecimal"/><field name="MANUAL_ENTRIES_RESET_DATE" class="java.sql.Timestamp"/><background><band splitType="Stretch"/></background><title><band height="79" splitType="Stretch"><staticText><reportElement x="165" y="22" width="236" height="29"/><textElement/><text><![CDATA[Test Report Title]]></text></staticText></band></title><pageHeader><band height="35" splitType="Stretch"><staticText><reportElement x="193" y="9" width="161" height="20"/><textElement/><text><![CDATA[Test Report Page Header]]></text></staticText></band></pageHeader><columnHeader><band height="61" splitType="Stretch"><staticText><reportElement x="193" y="23" width="161" height="20"/><textElement/><text><![CDATA[Test Report Column Header]]></text></staticText></band></columnHeader><detail><band height="125" splitType="Stretch"><textField><reportElement x="93" y="36" width="100" height="20"/><textElement/><textFieldExpression class="java.lang.String"><![CDATA[$F{......_ID}]]></textFieldExpression></textField><textField><reportElement x="193" y="36" width="100" height="20"/><textElement/><textFieldExpression class="java.lang.String"><![CDATA[$F{......}]]></textFieldExpression></textField><textField><reportElement x="293" y="36" width="100" height="20"/><textElement/><textFieldExpression class="java.lang.String"><![CDATA[$F{......_DATE}]]></textFieldExpression></textField></band></detail><columnFooter><band height="45" splitType="Stretch"><staticText><reportElement x="203" y="13" width="167" height="20"/><textElement/><text><![CDATA[Test Report Column Footer]]></text></staticText></band></columnFooter><pageFooter><band height="54" splitType="Stretch"><staticText><reportElement x="203" y="15" width="167" height="20"/><textElement/><text><![CDATA[Test Report Page Footer]]></text></staticText></band></pageFooter><summary><band height="42" splitType="Stretch"><staticText><reportElement x="203" y="12" width="167" height="20"/><textElement/><text><![CDATA[Test Report Summary]]></text></staticText></band></summary></jasperReport>
java中调用报表模板,产生相应的报表文件
用JasperReports提供的API调用模板,创建PDF
package com.test.report;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.sql.Connection;import java.sql.Driver;import java.sql.DriverManager;import java.sql.SQLException;import java.util.HashMap;import java.util.Properties;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.JasperRunManager;public class JDBCGenerateReportTest {public static void main(String[] args) {try { DriverManager.registerDriver((Driver)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}Properties prop = new Properties(); prop.put("user", "your username"); prop.put("password", "your password"); Connection conn = null;try {conn = DriverManager.getConnection("jdbc:oracle:thin:@ip:1521:database", prop);} catch (SQLException e) {e.printStackTrace();}OutputStream fos = null;InputStream fis = null;try {fos = new FileOutputStream(new File("report.pdf"));fis = new FileInputStream(new File("test_report1.jasper"));//注意inputStream中要传入编译后的报表文件JasperRunManager.runReportToPdfStream(fis, fos, new HashMap<String,Object>(), conn);} catch (JRException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {fos.close();} catch (IOException e) {e.printStackTrace();}try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}
- JasperReports的简单介绍
- JasperReports 类库简单介绍
- 一个简单的iReport + jasperReports例子
- JasperReports Scriptlet介绍
- JasperReports的开发流程
- Jasperreports的XSD翻译
- JasperReports
- JasperReports
- JasperReports
- JasperReports
- JasperReports
- jasperReports
- Jasperreports和iReport 的使用
- Jasperreports和iReport 的使用
- JasperReports的一些小技巧
- JasperReports报表的开发流程
- JasperReports报表的开发流程
- JasperReports报表的开发流程
- 中国客户成国际艺术品拍卖大买家
- OneThink创建新的菜单
- Linux 虚拟内存,用户空间,内核空间
- Spring+Hibernate+Atomikos最基础的JTA实例
- 在window环境下编译flowerplayer
- JasperReports的简单介绍
- JVM系列一:JVM内存组成及分配
- 计算ORACLE使用内存方法(on AIX)
- BZOJ 1010: [HNOI2008]玩具装箱toy
- python 学习记录1
- oracle 解锁表
- HDFS之StorageInfo
- Dynamic Web TWAIN使用教程:如何从Firefox扫描图片
- 坐标系统那点事