`

ireport

阅读更多

一、iReport简介

说到iReport不得不先介绍Jasperreport,Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写 一个XML文件,然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等。而iReport就是一个制 作Jasperreport的XML文件的可视化开发工具。只是一个UI。


二、安装说明

2.1 基本安装
现在最新的版本是iReport 0.5.1 (Aug 27, 2005).
下载后解压然后在根目录双击iReport.bat就可以用了,但是为了可以使用external ttf font还必须要把 iReport-0.5.1/fonts 加到环境变量里面去。

2.2 了解制作报表用的包
下载后到到 iReport-0.5.1/lib 里看看,你就可以发现iReport的真面目了。
(1) jasperreports-1.0.1.jar
jasperreports 是iReport的核心内容。它是一个强力的报表产生工具,他有能力描述丰富内容到屏幕上、到打印机或到PDF, HTML, XLS, CSV和XML文件。它完全用Java编写的,并可在各种Java应用(包括J2EE或WEB应用)中用来产生动态内容。它的主要目的是以一种简单而灵活 的方式来帮助创建导向的页面。
JasperReports组织根据在一个XML文件中定义的报表设计通过JDBC来接受来自一个关系数据库中的数据. 为了以数据来填充报表,报表设计必须首先被编译。
jasperreports的官方网站:http://jasperreports.sourceforge.net/

(2) itext-1.3.1.jar
iText是一个开放源码的Java类库,是用来生成PDF文件的。
iText的官方网站:http://itext.sourceforge.net
如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包。
tTextAsian的官方下载地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
 
(3) jfreechart-1.0.0-rc1.jar
jfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG等各式的文件。
这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
jfreechart的官方下载地址:http://www.jfree.org/jfreechart/
  
(4) jcommon-1.0.0-rc1.jar
JCommon 是一组有用的classes集合.它已经用在JFreeChart,JFreeReport与其它项目上. 这个类库包含了以下功能: 文本工具类(text utilities), 用来显示关于应用程序信息的用户界面类,布局定制管理器,一个日期选择面板,序列化工具类,XML解析器支持类.
jcommon的官方下载地址:http://www.jfree.org/jcommon/

(5) poi-2.0-final-20040126.jar
Apache 的Jakata项目的POI子项目,目标是处理ole2对象。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属 性如sheet,cell等等。
直接调用poi包的不是ireport,而是jasperreport。
poi的官方下载地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/

这些是用来制作报表用的包,所以可以用最新的版本来代替原有包。但是务必保持与项目中的包一致,因为很多开源的项目都不向下兼容。(例如jasperreport)

 

三、制作jrxml、jasper

3.1 选择语言
Tools->Option->General->Language
3.2 连接数据库
资料来源->连结/资料来源
如果要使用mysql以外的数据库,要保证jdbc包在环境变量里。放到iReport-0.5.1/lib 下也可以。name相当于一个JNDI。添好后点击test按钮如果显示成功就可以执行下一步了。
3.3 新建一个Report
定位可以控制报表是横向的还是纵向的。Portrait是纵向,Landscape是横向。
边距是可以调整的。

3.4 基本域
title域用来放报表的总标题
pageHeaher域顾名思义页头
columnHeader域是用来放static text的,也就是不循环的部分。
detail域是用来放text field的,也就是循环部分。
pageFooter域是用来放本页的统计参数的。
summary域是用来放整个表的统计参数的。

可以直接调整每个域的长度,也可以通过Band properties来调整。当然总长度是不会超过页面的原长。

3.5 报表查询
3.5.1 为报表添加SQL查询语句
资料来源->报表查询
在Report SQL query里填写SQl语句。如果语句正确,在下面的field里就会显示正常的表字段。

3.5.2 为报表添加动态字段
预览->报表字段
把fields里的字段直接拖到报表上就行了。

3.5.3 为SQL语句添加参数
预览->报表参数
在parameters里新增一个参数
paratemeter name 是参数名,在SQL语句里写成"$P{参数名}"
paratemeter class type里选择参数类型。
注意:如果是int型的数据,最好在报表字段里将该字段的Class type改成java.lang.String型的。
另外一种办法,不管该字段原来是什么数据类型,直接在paratemeter class type里选择java.lang.String类型,然后在Default value expression 填写"Integer.toString(整数)"。

3.5.4 添加报表变量
预览->报表变量 $V{变量名}

3.5.5 处理字体
3.5.5.1 基本设置
选中字段->右键->properties->font(双击也可以)
Report font 选择全局的字体(仅限于该报表)
Font name 选择在ireport里面显示的字体
Pdf font name 选择在pdf里面显示的字体
Rotation 选择内容是否旋转(很有用的选项)
PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H

3.5.5.2 选择外部字体
第一步 先在Pdf font name里选择External TTF font,然后在下面的Ture Type font里选择外部字体,当然要用的外部字体放在iReport-0.5.1/fonts目录下面。
第二步 在web项目的WEB-INF/classes/下面放要用到的外部字体,才能在程序里正常显示。

3.5.5.3 设定该报表的全局字体
预览->报表字型

3.6 编译jrxml
建立->编译
编译后生成一个后缀名为jasper的binary文件,可以直接给程序调用。


四、web项目应用
4.1 jsp输出PDF报表

4.1.1 需要放到项目里的包
itext-1.3.1.jar
iTextAsian.jar
jasperreports-1.0.1.jar

4.1.2 输出PDF注意事项:

4.1.3 jsp输出PDF的例子

<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager" %>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JasperRunManager"%>//pdf

<%
   String rowid = "1";//初始化变量
 
   Connection conn= DriverManager.getConnection("proxool.test");//从数据源连接数据库
 
   //装载jasper文件application
   File exe_rpt = new File(application.getRealPath("/reports/test.jasper"));
 
   //rowid就是iReport的变量$P{rowid}的名称
   Map parameters = new HashMap();
   parameters.put("rowid",rowid);

   try{
    // fill
    JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt.getPath(),parameters,conn);
  
    // 生成pdf
    byte[] bytes = JasperRunManager.runReportToPdf(exe_rpt.getPath(),parameters,conn);
 
    response.setContentType("application/pdf");
    response.setContentLength(bytes.length);
    ServletOutputStream ouputStream = response.getOutputStream();
    ouputStream.write(bytes,0,bytes.length);
    ouputStream.flush();
    ouputStream.close();
  
    conn.close();
}catch(JRException ex){
    out.print("Jasper Output Error:"+ex.getMessage());
   }

%>

4.2 jsp输出EXCEL报表

4.2.1 需要放到项目里的包
jasperreports-1.0.1.jar
poi-2.0-final-20040126.jar

4.2.2 输出excel要注意的:
(1) 输出excel报表必须fields的边界刚好填充满整个页面,不然会有大量的空白出现。
(2) 删除记录最下面的空行需要加上参数
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
(3) 删除多余的ColumnHeader需要加上参数
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);
(4) 在ireport里给fields加上border,那输出的excel就会有很黑的边框,跟excel默认的灰度边框就会很不协调。但是如果不加border,在输出的excel里就不会显示每个表格的边框。
解决方法是:
第一步 在选中字段->右键->properties->Common->Transparent 打上勾。
第二步 在输出的jsp页面加上参数
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);

4.2.3 jsp输出EXCEL的例子
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager" %>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>//excel
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>//excel
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>//excel

<%
   String rowid = "1";
   Connection conn= DriverManager.getConnection("proxool.test");

   //装载jasper文件application
   File exe_rpt = new File(application.getRealPath("/excel/test_excel.jasper"));
 
   //rowid就是iReport的变量$P{rowid}的名称
   Map parameters = new HashMap();
   parameters.put("rowid",rowid);
 
   try{

    // fill
    JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt.getPath(),parameters,conn);
  
    // excel输出
    ByteArrayOutputStream oStream = new ByteArrayOutputStream();
 
    JRXlsExporter exporter = new JRXlsExporter();
   
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
    exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); // 删除记录最下面的空行
    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);// 删除多余的ColumnHeader
   exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);// 显示边框
    exporter.exportReport();
   
    byte[] bytes = oStream.toByteArray();
  
    if(bytes != null && bytes.length > 0) {
     response.reset();
     response.setContentType("application/vnd.ms-excel");
     response.setContentLength(bytes.length);
     ServletOutputStream ouputStream = response.getOutputStream();
     ouputStream.write(bytes,0,bytes.length);
     ouputStream.flush();
     ouputStream.close();
 
    }else{
     out.print("bytes were null!");
    }
  
    conn.close();
   }catch(JRException ex){
    out.print("Jasper Output Error:"+ex.getMessage());
   }

%>

4.3 jsp输出html报表
没有意义,不写。

 

五、备注

5.1 下载地址
iReport的官方网站:http://ireport.sourceforge.net/
jasperreports的官方网站:http://jasperreports.sourceforge.net/
tTextAsian的官方下载地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
jfreechart的官方下载地址:http://www.jfree.org/jfreechart/
jcommon的官方下载地址:http://www.jfree.org/jcommon/
poi的官方下载地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/

分享到:
评论

相关推荐

    ireport最全打印归纳

    iReport 最全打印归纳 iReport 是一个基于 Java 语言编写的报表引擎,用户可以按照它制定的规则编写一个 XML 文件,生成各种格式的文件,包括 PDF、HTML、XML、XLS、CSV 等。iReport 是报表的设计部分,界面设计是...

    Ireport

    标题"Ireport"指的是开源报表设计工具iReport,它是一个用于创建JasperReports的图形化界面工具。iReport允许用户设计复杂的报表布局,包括表格、图表、文本框等元素,并能够与Java应用程序、Web应用程序以及数据库...

    iReport-5.6.0.rar

    iReport是一款强大的开源报表设计工具,它主要用于创建复杂的SQL查询并将其转化为美观的报表。iReport 5.6.0是其一个重要的版本,尤其在中文支持方面做出了显著的改进,确保了在设计报表时可以顺利地使用中文字体,...

    ireport子报表嵌套

    iReport 子报表嵌套技术详解 iReport 子报表嵌套技术是 ireport 提供的一种高级功能,通过子报表技术我们可以创建复杂的报表,实现多对一的数据展示问题。在本文中,我们将通过 ireport 子报表技术,实现自有房产...

    免费下载iReport-5.0.0.rar

    iReport是一款功能强大的开源报表设计工具,主要用于创建和设计基于JasperReports的复杂报表。它以其用户友好的界面和丰富的特性集,深受Java开发者和数据分析师的喜爱。在本压缩包"iReport-5.0.0.rar"中,包含的是...

    iReport-2.0.5免安装版

    iReport是一款强大的报表设计工具,尤其在Java世界中广受欢迎,因为它与JasperReports库紧密集成,用于创建复杂的报表和仪表板。这个“iReport-2.0.5免安装版”是该软件的一个便携版本,无需进行复杂的安装过程,...

    iReport-5.0.1-windows-installer.exe iReport报表开发工具

    iReport是一款强大的报表开发工具,尤其在Java应用领域中被广泛应用。它允许开发者设计复杂的报表,包括表格、图表、文本和图像,支持多种数据源,如数据库、XML、JSON等。iReport是JasperReports库的配套设计工具,...

    iReport-4.5.1.zip

    iReport是一款强大的报告设计工具,尤其在Java世界中广受欢迎,因为它可以与JasperReports库无缝集成,用于创建复杂的报表和图表。iReport 4.5.1是该软件的一个版本,它提供了一种免安装的下载方式,使得用户可以在...

    Ireport 的 JAR包

    【标题】"Ireport的JAR包"是一个包含多个组件的集合,主要用于报表设计和开发。IReport是一款基于Java的开源报表工具,它允许开发者通过直观的用户界面创建复杂的SQL查询,设计美观的报表,并将其集成到Java应用程序...

    ireport本地安装eclipse插件

    ### iReport Eclipse 插件本地安装指南 #### 一、前言 在开发过程中,有时候我们需要使用特定的工具来提高工作效率。例如,在处理报表时,iReport 是一个非常实用的工具,它能够帮助我们轻松创建复杂的报表。为了...

    iReport 1.2.5免安装版本下载

    这个“iReport 1.2.5免安装版本”提供了便捷的方式,让用户无需进行繁琐的安装过程,只需下载解压后即可直接运行,大大简化了用户的操作步骤。 1. **jrxml文件**:jrxml是JasperReports的一种源文件格式,它是基于...

    ireport安装包,需事先安装好jdk

    "ireport安装包,需事先安装好jdk" 这个标题表明了主要的话题是关于ireport的安装过程,其中的关键步骤是需要预先安装Java Development Kit(简称JDK)。IReport是一款用于设计Java报表的开源工具,它与...

    iReport-5.6.0 安装文件

    iReport是一款专为JasperReports设计的开源报表开发工具,它极大地简化了创建复杂的报表流程。JasperReport是一个强大的开源报告库,允许开发者生成各种类型的静态和交互式报告,但其自身并不包含图形用户界面(GUI...

    ireport控制分页显示

    在探讨“ireport控制分页显示”的主题时,我们深入解析如何在iReport设计工具中实现每页固定记录条数的分页显示功能。iReport是JasperReports的一部分,一个强大的开源报表工具,广泛用于Java应用程序中生成各种复杂...

    iReport-5.6.0-designer03

    iReport是一款强大的报表设计工具,尤其在Java平台上广泛使用,它是Jaspersoft Studio的前身。5.6.0是其一个稳定版本,提供了丰富的报表设计功能。本压缩包"iReport-5.6.0-designer03"包含了该版本的多个组成部分,...

    ireport5.6.0软件+使用文档.rar

    《iReport 5.6.0:报表设计与使用的全面指南》 iReport是一款强大的开源报表设计工具,专为Java开发者设计,支持JasperReports库,使得创建复杂的报表变得简单易行。本指南将深入介绍iReport 5.6.0版本的安装、配置...

    ireport模板和自定义字体jar

    在IT行业中,报表生成是数据分析和业务展示的重要环节,而`iReport`作为一个开源的Java报表工具,为开发者提供了设计和生成复杂报表的功能。本文将深入探讨`iReport`模板和自定义字体的使用,以及如何结合`...

    ireport制作复选框的办法

    iReport 制作复选框的方法 iReport 是一个功能强大的报表设计工具,它可以帮助开发者快速创建复杂的报表。今天,我们将学习如何在 iReport 中制作复选框,并探讨其背后的逻辑和实现原理。 标题解释 iReport 制作复...

    ireport固定表头隐藏列

    ireport是一款强大的报表设计工具,它基于JasperReports库,允许用户通过直观的图形界面创建复杂的报表布局。本文将深入探讨如何在ireport中实现"固定表头"、"隐藏列"以及"列的固定"这三个功能,以便更好地理解和...

    iReport 报表、子报表、主从报表、合计、实例解析

    iReport 报表、子报表、主从报表、合计、实例解析1. 开发使用步骤(iReport4.1)... 2 4.1. JasperReport 和iReport的介绍... 2 4.1.1. JasperReport 简介... 3 4.1.2. iReport 简介... 3 4.1.2.1. iReport几个重要...

Global site tag (gtag.js) - Google Analytics