- 浏览: 111762 次
- 性别:
- 来自: 北京
最新评论
-
a535182324:
不错,学习了
如何区分JDK,Tomcat,eclipse的32位与64版本 -
lxh2002:
总结得很全面,辛苦了!
Spring 3.x jar 包详解 与 依赖关系 -
jxdezhu1:
很详细,正好在研究断点续传,谢谢
java断点续传的原理
ireport讲解
环境配置
1 正确安装配置java的jdk
2 将ireport放到c:\ireport
3 将ant放到c:\ant(我用的是bea的ant路径是D:\bea\weblogic81\server\ant)
4 将jasperreports-1.2.0.jar 放置到当前classpath中(没有加,我使用的Ireport\lib下已经存在了)
5 将itext-1.3.1.jar放置到c:\ireport\lib(没有加,我使用的Ireport\lib下已经存在了)
6 修改ireport\ireport.bat文件,加入以下内容
set JAVA_HOME=C:\j2sdk1.4.2
set ANT_HOME=D:\bea\weblogic81\server\
set IREPORT_HOME=c:\ireport rem %ANT_HOME%\bin\ant javadocs %ANT_HOME%\bin\ant iReport
我修改的是:
set JAVA_HOME=C:\j2sdk1.4.2
set ANT_HOME=D:\bea\weblogic81\server\
set IREPORT_HOME=F:\backup\iReport-1.2.0 rem %ANT_HOME%\bin\ant javadocs %ANT_HOME%\bin\ant iReport
(不过对以上修改,感觉没有什么用处)
7 提供一个正常提供服务的数据库
现在高版本的ireport是不需要进行配置,可以直接使用的.
了解制作报表用的包
1 jasperreports-1.0.1.jar jasperreports是iReport的核心内容,jsperreport是一个报表制作程序,用它的规则制定一个xml文件,然后编译生成一个.jsper文件,这个.jsper文件是我们真正使用的,它很象.jsp文件,使用的是它编译后的servlet. (http://jasperreports.sourceforge.net/)
2 itext-1.3.1.jar iText是一个开放源码的Java类库,是用来生成PDF文件的。如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包iTextAsian.jar (http://itextdocs.lowagie.com/downloads/iTextAsian.jar)
3 jfreechart-1.0.0-rc1.jar jfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG等各式的文件。 (http://www.jfree.org/jfreechart/)
4 jcommon-1.0.0-rc1.jar JCommon是一组有用的classes集合.它已经用在JFreeChart,JFreeReport与其它项目上. 这个类库包含了以下功能: 文本工具类(text utilities), 用来显示关于应用程序信息的用户界面类, 布局定制管理器, 一个日期选择面板, 序列化工具类, XML解析器支持类. (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。 (http://www.apache.org/dyn/closer.cgi/jakarta/poi/)
使用介绍
1 启动:点击ireport\ireport.bat启动
2 修改语言环境:tools-option-general中language中更改-apply
3 创建报表 file-new document 输入名字-ok Portrait是纵向,Landscape是横向。
4 连接数据源 datasource-connection/datasource-new-connections porperties- 输入名字-选择jdbc Driver,jdbc url-输入username和password,-test测试通过表明数据源连接正确-save保存 (注意:必须保证数据库驱动在lib目录下)
5 基本域说明
title域用来放报表的总标题
pageHeaher域顾名思义页头
columnHeader域是用来放static text的,也就是不循环的部分。
detail域是用来放text field的,也就是循环部分。
pageFooter域是用来放本页的统计参数的。
summary域是用来放整个表的统计参数的。
可以直接调整每个域的长度,也可以通过Band properties来调整 (在我的项目中,只设置的title和detail,在title中显示报表的总标题和所有parameters字段,在detail中显示需要循环的列表字段)
6 在报表中添加字段static text edit-insert element -static text 鼠标拖拉添加在页面中双击或者右键properties在static text Tab 中输入字段名字,如果显示有乱码,font-font name中选择"中文GB2312" border 中可以设置表格边线样式
7 在报表中添加字段text field edit-insert element -text field 鼠标拖拉添加在页面中双击或者右键properties在text field 中输入字段名字, 样式如同$F{text_field_name},
f表示为field变量,是数据库中抽取出来的,你想在报表中显示的数据库内容,
p为parameter参数,是应用需要提供给报表的入口,比如想在报表被解释的时候提供where语句的条件值, 就可以用$P(parameterName)比如: select * from bugs where proname=$P{projectName} order by proname,modulename
v为变量(显示字体颜色为绿色,表示格式正确) border 中可以设置表格边线样式
8 调整报表布局鼠标拖动各个字段,拼接想要的报表布局,如果鼠标点击字段, 显示为红色,说明该字段跨越了两个域显示为绿色,说明两个字段叠加显示为蓝色,说明该字段位置正确
9 报表添加SQL查询语句 资料来源->报表查询(datasource-report query) 在Report SQL query里填写SQl语句。如果语句正确,在下面的field里就会显示正常的表字段。 (可以从显示的所有字段中选取想用做field的字段,点击ok后,自动添加为field动态字段)
10 为报表添加动态字段预览->报表字段(view-Fields) 新建一个字段,字段名字必须和报表中Fields中添加名字一直,同时必须是sql结果集中存在的. (把fields里的字段直接拖到报表上也行)
11 为SQL语句添加参数 预览->报表参数(view-parameters) 在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(整数)"。
12 添加报表变量 预览->报表变量 $V{变量名}(没有用到过!)
13 处理字体 选中字段->右键->properties->font(双击也可以) Report font 选择全局的字体(仅限于该报表) Font name 选择在ireport里面显示的字体 Pdf font name 选择在pdf里面显示的字体 Rotation 选择内容是否旋转(很有用的选项) PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H
14 设定该报表的全局字体 预览->报表字型(view-font)
15 编译jrxml 建立->编译 (build-compile) 编译后生成一个后缀名为jasper的binary文件,可以直接给程序调用。
web项目应用
1 jsp输出PDF报表
需要放到项目里的包 itext-1.3.1.jar iTextAsian.jar jasperreports-1.0.1.jar 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"%>
<%
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());
}
%>
}
jsp输出EXCEL报表
需要放到项目里的包 jasperreports-1.0.1.jar poi-2.0-final-20040126.jar
输出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);
2 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());
}
%>
}
总结 ireport可以显示图表,饼图,曲线图等,也可以显示符合报表
JasperReports介绍:
使用JasperReports生成报表是非常简单的,仅仅使用net.sf.jasperreports.engine包中的几个类即可完成报表的生成、预览、打印、导出等各个功能。
1. net.sf.jasperreports.engine.JasperCompileManager类。
使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)
编译完成后可以JasperCompileManager有两种处理方式:
1> 返回一个JasperReport对象
2> 在.jrxml文件所在的目录生成一个.jasper文件
这两种方式是由程序员自己选择的。不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。
2. net.sf.jasperreports.engine.JasperFillManager类
这个类的作用是用数据填充报表。它可以使用JasperReport对象也可以使用。jasper文件做为报表模板。
它同样有2中处理方式:
1> 返回一个JsaperPrint对象。
2> 在.jasper文件所在目录生成一个.jrprint文件
这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。任何实现了JRDataSource的类均可做为数据源使用
在net.sf.jasperreports.engine.data包中定义了一些数据源,可根据自己的需要选择。这里我使用的是JRTableModelDataSource做为
数据源(因为我的报表还要显示在Table中)。
3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager
者两个类的作用是打印、导出报表
他们使用 JasperPrint 和 .jrprint文件做为输入。
可以根据自己的需要使用里面的方法。
例:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
public class CompileReport {
public static void main(String args[]) {
try {
//编译report.jrxml并在report.jrxml所在的目录中生成report.jasper文件
JasperCompileManager.compileReportToFile("report.jrxml");
//填充数据,这里使用的是JREmptyDataSource
JasperFillManager.fillReportToFile("report.jasper", null, new JREmptyDataSource(50));
//预览报表,false代表不是使用xml文件。
JasperViewer view = new JasperViewer("reports.jrprint", false);
view.pack();
view.setVisible(true);
}
catch (Exception e) {
e.printStackTrace()
}
}
}
http://www.heci.net 贺词网!]
JasperReports学习笔记
版本:jasperreports-0.6.7
学习资料来源:http://jasperreports.sourceforge.net
一、 需求(requirements)
JasperReports要用到的工具和类
1. JDK(java开发环境)
JDK 1.2.2 or higher
2. XML
JAXP 1.1 XML Parser(XML解析器)
Jakarta Commons Digester Component (version 1.1 or later)
http://jakarta.apache.org/commons/digester/
Jakarta Commons BeanUtils Component (version 1.1 or later)
http://jakarta.apache.org/commons/beanutils/
Jakarta Commons Collections Component (version 1.0 or later)
http://jakarta.apache.org/commons/collections/
Jakarta Commons Logging Component (version 1.0 or later)
http://jakarta.apache.org/commons/logging/
3. JDBC(连接数据库用)
JDBC 2.0 Driver
4. PDF(转换为PDF文件用到)
iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares
(version 1.01 or later)
http://www.lowagie.com/iText/
5. XLS(转换为excel文件用)
Jakarta POI (version 2.0 or later)
http://jakarta.apache.org/poi/
二、快速了解(quick how to)
1. Main classes(主要的类)
用JasperReports 时,用到的主要类
net.sf.jasperreports.engine.JasperCompileManager
net.sf.jasperreports.engine.JasperFillManager
net.sf.jasperreports.engine.JasperPrintManager
net.sf.jasperreports.engine.JasperExportManager
这些类提供了很多静态方法,用来编译、填充、打印和导出报表。详细信息请参考JasperReports的javadoc文档。
net.sf.jasperreports.view.JasperViewer
此类用来预览生成的报表(generated reports.)。
net.sf.jasperreports.view.JasperDesignViewer
此类用来预览报表设计(view the report design)。
2. 编译报表设计Compiling a report design
xml文件定义报表设计(report design)。编译报表设计(report design)产生报表(generate reports)。网页http://jasperreports.sourceforge.net/quick.how.to.html中介绍用net.sf.jasperreports.engine.JasperCompileManager类的静态方法compileReportXXX()来编译报表设计(report design)。但是JasperCompileManager不赞成使用此方法编译报表设计(report design),推荐使用JasperCompileManager的方法compileReportXXX()来代替。
编译报表设计(report design)时,jasperreports engine首先检查模板,确定是否一致,然后转换所有的报表表达式(report expressions),最后产生.jasper文件。 要想使编译工作尽可能灵活,你可以实现接口net.sf.jasperreports.engine.design.JRCompiler。
3.预览报表设计 Viewing a report design
使用net.sf.jasperreports.view.JasperDesignViewer的程序来预览。他的main()方法接受报表设计文件名(xml)或者编译后的.jasper文件。
4. 填充报表 Filling a report
编译报表设计(xml文件)得到报表文件(.jasper),再调用net.sf.jasperreports.engine.JasperFillManager类的方法fillReportXXX(),可以得到报表(JasperPrint)。
5. 预览报表 Viewing a report
Generated reports can be viewed using the net.sf.jasperreports.view.JasperViewer application.
In its main() method, it receives the name of the file which contains the report to view.
我没有测试成功。
6. Printing a report
Generated reports can be printed using the printReport(), printPage() or printPages() static methods exposed by the net.sf.jasperreports.engine.JasperPrintManager class.
7. Exporting to PDF, HTML, XLS, CSV or XML format
填充报表文件(.jasper文件)得到报表(JasperPrint)后,可以使用net.sf.jasperreports.engine.JasperExportManager类的方法exportReportXXX()导出为各种格式的文件PDF,HTML,XML。
After having filled a report, we can also export it in PDF, HTML or XML format using the exportReportXXX() methods of the net.sf.jasperreports.engine.JasperExportManager class.
三、JasperReports的工作流程:
根据上图的流程,JasperReports做报表有一下步骤:
1、 报表设计,可以用ireport可视化工具来实现,生成xml文件。完成后,可以直接到步骤3,直接编译xml文件。
2、 如果已经存在报表设计文件(xml文件),可以用net.sf.jasperreports.engine.xml.JRXmlLoader.load()方法载入报表设计,该方法返回JasperDesign对象,通过JasperDesign对象,可以修改报表设计,比如:添加、删除字段,添加、删除变量,添加、删除分组,等等。
3、 完成报表设计后,接下来就可以编译报设计,编译报表设计可以用类net.sf.jasperreports.engine.JasperCompileManager的compileReport()方法来实现,该方法可以编译xml文件或JasperDesign对象,产生JasperReport对象,JasperReport对象可序列化,能够保存为文件(通常是.jasper文件)。类net.sf.jasperreports.engine.JasperCompileManager还可以把报表转化为报表设计文件(xml文件)。得到JasperReport对象(可从.jasper文件实例化一个JasperReport对象)后,给报表填充数据产生JasperPrint对象。JasperPrint对象可序列化,保存为文件。有了JasperPrint对象后,可以打印、浏览、转换为其他格式的文件,如:PDF,HTML,XML,XLS,CSV等等,这些操作就是我们想得到的最终结果。尽管JasperPrintManager类可以导出为PDF,XML文件,但是不赞成使用JasperPrintManager类来导出,建议用JasperExportManager类来导出PDF,HTML,XML文件;要导出XLS和CSV文件,用专业的导出类net.sf.jasperreports.engine.export.JRXlsExporter类和net.sf.jasperreports.engine.export.JRCsvExporter类
导出为XLS的代码段:
JRXlsExporter exporter = new JRXlsExporter();//创建实例
//设计参数
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, strDestFile);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.exportReport();//导出
导出为CSV文件和XLS类似。
1 正确安装配置java的jdk
2 将ireport放到c:\ireport
3 将ant放到c:\ant(我用的是bea的ant路径是D:\bea\weblogic81\server\ant)
4 将jasperreports-1.2.0.jar 放置到当前classpath中(没有加,我使用的Ireport\lib下已经存在了)
5 将itext-1.3.1.jar放置到c:\ireport\lib(没有加,我使用的Ireport\lib下已经存在了)
6 修改ireport\ireport.bat文件,加入以下内容
set JAVA_HOME=C:\j2sdk1.4.2
set ANT_HOME=D:\bea\weblogic81\server\
set IREPORT_HOME=c:\ireport rem %ANT_HOME%\bin\ant javadocs %ANT_HOME%\bin\ant iReport
我修改的是:
set JAVA_HOME=C:\j2sdk1.4.2
set ANT_HOME=D:\bea\weblogic81\server\
set IREPORT_HOME=F:\backup\iReport-1.2.0 rem %ANT_HOME%\bin\ant javadocs %ANT_HOME%\bin\ant iReport
(不过对以上修改,感觉没有什么用处)
7 提供一个正常提供服务的数据库
现在高版本的ireport是不需要进行配置,可以直接使用的.
了解制作报表用的包
1 jasperreports-1.0.1.jar jasperreports是iReport的核心内容,jsperreport是一个报表制作程序,用它的规则制定一个xml文件,然后编译生成一个.jsper文件,这个.jsper文件是我们真正使用的,它很象.jsp文件,使用的是它编译后的servlet. (http://jasperreports.sourceforge.net/)
2 itext-1.3.1.jar iText是一个开放源码的Java类库,是用来生成PDF文件的。如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包iTextAsian.jar (http://itextdocs.lowagie.com/downloads/iTextAsian.jar)
3 jfreechart-1.0.0-rc1.jar jfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG等各式的文件。 (http://www.jfree.org/jfreechart/)
4 jcommon-1.0.0-rc1.jar JCommon是一组有用的classes集合.它已经用在JFreeChart,JFreeReport与其它项目上. 这个类库包含了以下功能: 文本工具类(text utilities), 用来显示关于应用程序信息的用户界面类, 布局定制管理器, 一个日期选择面板, 序列化工具类, XML解析器支持类. (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。 (http://www.apache.org/dyn/closer.cgi/jakarta/poi/)
使用介绍
1 启动:点击ireport\ireport.bat启动
2 修改语言环境:tools-option-general中language中更改-apply
3 创建报表 file-new document 输入名字-ok Portrait是纵向,Landscape是横向。
4 连接数据源 datasource-connection/datasource-new-connections porperties- 输入名字-选择jdbc Driver,jdbc url-输入username和password,-test测试通过表明数据源连接正确-save保存 (注意:必须保证数据库驱动在lib目录下)
5 基本域说明
title域用来放报表的总标题
pageHeaher域顾名思义页头
columnHeader域是用来放static text的,也就是不循环的部分。
detail域是用来放text field的,也就是循环部分。
pageFooter域是用来放本页的统计参数的。
summary域是用来放整个表的统计参数的。
可以直接调整每个域的长度,也可以通过Band properties来调整 (在我的项目中,只设置的title和detail,在title中显示报表的总标题和所有parameters字段,在detail中显示需要循环的列表字段)
6 在报表中添加字段static text edit-insert element -static text 鼠标拖拉添加在页面中双击或者右键properties在static text Tab 中输入字段名字,如果显示有乱码,font-font name中选择"中文GB2312" border 中可以设置表格边线样式
7 在报表中添加字段text field edit-insert element -text field 鼠标拖拉添加在页面中双击或者右键properties在text field 中输入字段名字, 样式如同$F{text_field_name},
f表示为field变量,是数据库中抽取出来的,你想在报表中显示的数据库内容,
p为parameter参数,是应用需要提供给报表的入口,比如想在报表被解释的时候提供where语句的条件值, 就可以用$P(parameterName)比如: select * from bugs where proname=$P{projectName} order by proname,modulename
v为变量(显示字体颜色为绿色,表示格式正确) border 中可以设置表格边线样式
8 调整报表布局鼠标拖动各个字段,拼接想要的报表布局,如果鼠标点击字段, 显示为红色,说明该字段跨越了两个域显示为绿色,说明两个字段叠加显示为蓝色,说明该字段位置正确
9 报表添加SQL查询语句 资料来源->报表查询(datasource-report query) 在Report SQL query里填写SQl语句。如果语句正确,在下面的field里就会显示正常的表字段。 (可以从显示的所有字段中选取想用做field的字段,点击ok后,自动添加为field动态字段)
10 为报表添加动态字段预览->报表字段(view-Fields) 新建一个字段,字段名字必须和报表中Fields中添加名字一直,同时必须是sql结果集中存在的. (把fields里的字段直接拖到报表上也行)
11 为SQL语句添加参数 预览->报表参数(view-parameters) 在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(整数)"。
12 添加报表变量 预览->报表变量 $V{变量名}(没有用到过!)
13 处理字体 选中字段->右键->properties->font(双击也可以) Report font 选择全局的字体(仅限于该报表) Font name 选择在ireport里面显示的字体 Pdf font name 选择在pdf里面显示的字体 Rotation 选择内容是否旋转(很有用的选项) PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H
14 设定该报表的全局字体 预览->报表字型(view-font)
15 编译jrxml 建立->编译 (build-compile) 编译后生成一个后缀名为jasper的binary文件,可以直接给程序调用。
web项目应用
1 jsp输出PDF报表
需要放到项目里的包 itext-1.3.1.jar iTextAsian.jar jasperreports-1.0.1.jar 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"%>
<%
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());
}
%>
}
jsp输出EXCEL报表
需要放到项目里的包 jasperreports-1.0.1.jar poi-2.0-final-20040126.jar
输出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);
2 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());
}
%>
}
总结 ireport可以显示图表,饼图,曲线图等,也可以显示符合报表
JasperReports介绍:
使用JasperReports生成报表是非常简单的,仅仅使用net.sf.jasperreports.engine包中的几个类即可完成报表的生成、预览、打印、导出等各个功能。
1. net.sf.jasperreports.engine.JasperCompileManager类。
使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)
编译完成后可以JasperCompileManager有两种处理方式:
1> 返回一个JasperReport对象
2> 在.jrxml文件所在的目录生成一个.jasper文件
这两种方式是由程序员自己选择的。不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。
2. net.sf.jasperreports.engine.JasperFillManager类
这个类的作用是用数据填充报表。它可以使用JasperReport对象也可以使用。jasper文件做为报表模板。
它同样有2中处理方式:
1> 返回一个JsaperPrint对象。
2> 在.jasper文件所在目录生成一个.jrprint文件
这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。任何实现了JRDataSource的类均可做为数据源使用
在net.sf.jasperreports.engine.data包中定义了一些数据源,可根据自己的需要选择。这里我使用的是JRTableModelDataSource做为
数据源(因为我的报表还要显示在Table中)。
3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager
者两个类的作用是打印、导出报表
他们使用 JasperPrint 和 .jrprint文件做为输入。
可以根据自己的需要使用里面的方法。
例:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
public class CompileReport {
public static void main(String args[]) {
try {
//编译report.jrxml并在report.jrxml所在的目录中生成report.jasper文件
JasperCompileManager.compileReportToFile("report.jrxml");
//填充数据,这里使用的是JREmptyDataSource
JasperFillManager.fillReportToFile("report.jasper", null, new JREmptyDataSource(50));
//预览报表,false代表不是使用xml文件。
JasperViewer view = new JasperViewer("reports.jrprint", false);
view.pack();
view.setVisible(true);
}
catch (Exception e) {
e.printStackTrace()
}
}
}
http://www.heci.net 贺词网!]
JasperReports学习笔记
版本:jasperreports-0.6.7
学习资料来源:http://jasperreports.sourceforge.net
一、 需求(requirements)
JasperReports要用到的工具和类
1. JDK(java开发环境)
JDK 1.2.2 or higher
2. XML
JAXP 1.1 XML Parser(XML解析器)
Jakarta Commons Digester Component (version 1.1 or later)
http://jakarta.apache.org/commons/digester/
Jakarta Commons BeanUtils Component (version 1.1 or later)
http://jakarta.apache.org/commons/beanutils/
Jakarta Commons Collections Component (version 1.0 or later)
http://jakarta.apache.org/commons/collections/
Jakarta Commons Logging Component (version 1.0 or later)
http://jakarta.apache.org/commons/logging/
3. JDBC(连接数据库用)
JDBC 2.0 Driver
4. PDF(转换为PDF文件用到)
iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares
(version 1.01 or later)
http://www.lowagie.com/iText/
5. XLS(转换为excel文件用)
Jakarta POI (version 2.0 or later)
http://jakarta.apache.org/poi/
二、快速了解(quick how to)
1. Main classes(主要的类)
用JasperReports 时,用到的主要类
net.sf.jasperreports.engine.JasperCompileManager
net.sf.jasperreports.engine.JasperFillManager
net.sf.jasperreports.engine.JasperPrintManager
net.sf.jasperreports.engine.JasperExportManager
这些类提供了很多静态方法,用来编译、填充、打印和导出报表。详细信息请参考JasperReports的javadoc文档。
net.sf.jasperreports.view.JasperViewer
此类用来预览生成的报表(generated reports.)。
net.sf.jasperreports.view.JasperDesignViewer
此类用来预览报表设计(view the report design)。
2. 编译报表设计Compiling a report design
xml文件定义报表设计(report design)。编译报表设计(report design)产生报表(generate reports)。网页http://jasperreports.sourceforge.net/quick.how.to.html中介绍用net.sf.jasperreports.engine.JasperCompileManager类的静态方法compileReportXXX()来编译报表设计(report design)。但是JasperCompileManager不赞成使用此方法编译报表设计(report design),推荐使用JasperCompileManager的方法compileReportXXX()来代替。
编译报表设计(report design)时,jasperreports engine首先检查模板,确定是否一致,然后转换所有的报表表达式(report expressions),最后产生.jasper文件。 要想使编译工作尽可能灵活,你可以实现接口net.sf.jasperreports.engine.design.JRCompiler。
3.预览报表设计 Viewing a report design
使用net.sf.jasperreports.view.JasperDesignViewer的程序来预览。他的main()方法接受报表设计文件名(xml)或者编译后的.jasper文件。
4. 填充报表 Filling a report
编译报表设计(xml文件)得到报表文件(.jasper),再调用net.sf.jasperreports.engine.JasperFillManager类的方法fillReportXXX(),可以得到报表(JasperPrint)。
5. 预览报表 Viewing a report
Generated reports can be viewed using the net.sf.jasperreports.view.JasperViewer application.
In its main() method, it receives the name of the file which contains the report to view.
我没有测试成功。
6. Printing a report
Generated reports can be printed using the printReport(), printPage() or printPages() static methods exposed by the net.sf.jasperreports.engine.JasperPrintManager class.
7. Exporting to PDF, HTML, XLS, CSV or XML format
填充报表文件(.jasper文件)得到报表(JasperPrint)后,可以使用net.sf.jasperreports.engine.JasperExportManager类的方法exportReportXXX()导出为各种格式的文件PDF,HTML,XML。
After having filled a report, we can also export it in PDF, HTML or XML format using the exportReportXXX() methods of the net.sf.jasperreports.engine.JasperExportManager class.
三、JasperReports的工作流程:
根据上图的流程,JasperReports做报表有一下步骤:
1、 报表设计,可以用ireport可视化工具来实现,生成xml文件。完成后,可以直接到步骤3,直接编译xml文件。
2、 如果已经存在报表设计文件(xml文件),可以用net.sf.jasperreports.engine.xml.JRXmlLoader.load()方法载入报表设计,该方法返回JasperDesign对象,通过JasperDesign对象,可以修改报表设计,比如:添加、删除字段,添加、删除变量,添加、删除分组,等等。
3、 完成报表设计后,接下来就可以编译报设计,编译报表设计可以用类net.sf.jasperreports.engine.JasperCompileManager的compileReport()方法来实现,该方法可以编译xml文件或JasperDesign对象,产生JasperReport对象,JasperReport对象可序列化,能够保存为文件(通常是.jasper文件)。类net.sf.jasperreports.engine.JasperCompileManager还可以把报表转化为报表设计文件(xml文件)。得到JasperReport对象(可从.jasper文件实例化一个JasperReport对象)后,给报表填充数据产生JasperPrint对象。JasperPrint对象可序列化,保存为文件。有了JasperPrint对象后,可以打印、浏览、转换为其他格式的文件,如:PDF,HTML,XML,XLS,CSV等等,这些操作就是我们想得到的最终结果。尽管JasperPrintManager类可以导出为PDF,XML文件,但是不赞成使用JasperPrintManager类来导出,建议用JasperExportManager类来导出PDF,HTML,XML文件;要导出XLS和CSV文件,用专业的导出类net.sf.jasperreports.engine.export.JRXlsExporter类和net.sf.jasperreports.engine.export.JRCsvExporter类
导出为XLS的代码段:
JRXlsExporter exporter = new JRXlsExporter();//创建实例
//设计参数
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, strDestFile);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.exportReport();//导出
导出为CSV文件和XLS类似。
- 新建_Microsoft_Word_文档.rar (1.4 MB)
- 下载次数: 10
相关推荐
《iReport 5.6.0:报表设计与使用的全面指南》 iReport是一款强大的开源报表设计工具,专为Java开发者设计,支持JasperReports库,使得创建复杂的报表变得简单易行。本指南将深入介绍iReport 5.6.0版本的安装、配置...
本文将深入讲解iReport的属性设置,帮助你更好地理解和创建报表。 首先,"Report name"是报表模板的名称,它有助于管理和识别不同的报表模板。设定一个有意义的名称有利于后期的查找和管理。 "Page size"和"Preset...
其次,"在Ireport4.0.1下实现PDF中文报表.pdf"则针对更新的Ireport4.0.1版本,详细讲解了如何在这个新版本中创建并导出包含中文内容的PDF报表。这个教程可能涉及了JasperReports库的升级、字体设置、字符编码调整等...
3 精华教程_2_JasperReports深入讲解 iReport JasperReports深入讲解 30K 4 精华教程_3_报表结构完全掌握 iReport 报表结构完全掌握 38K 5 精华教程_4_报表元素大全 iReport 报表元素大全 112K 6 精华教程_5_中...
本文将详细介绍如何使用 IReport 制作动态列,并对动态列的排序进行详细讲解。 IReport 动态列的制作 制作动态列需要使用 Crosstab 组件,该组件可以在 Summary 中添加。在添加 Crosstab 组件时,需要设置数据源为...
【ireport中文帮助文档】 `iReport`是一款强大的开源报表设计工具,专为Java平台设计,主要用于创建JasperReports报表。这款工具提供了图形化的用户界面,使得非程序员也能轻松设计复杂的报表。`iReport`与Java应用...
同时,也会讲解如何通过Ireport设计的报表模板与Java代码交互,实现数据的动态填充和报表的导出功能。 在实际的学习过程中,你可能需要结合《ireport-cn-使用手册》来了解Ireport的详细功能,借助《iReport简单教程...
iReport是一款强大的报表设计工具,它是JasperReports项目的一部分,专门用于创建...提供的“iReport报表开发指南.pdf”文档将是你探索这一领域的宝贵资源,它会详细讲解每个步骤和技巧,帮助你成为报表设计的专家。
接下来,我们将详细讲解ireport5.0的工作界面和基本操作。工作区包括设计视图、预览视图和源代码视图,用户可以根据需要在这些视图之间切换。设计视图中,我们可以添加各种报表元素,如文本框、表格、图表等;预览...
深入讲解部分则涵盖了JasperReports库的高级用法,如表达式语言、脚本、自定义函数等,帮助开发者充分利用IReport的功能。 **报表结构完全掌握和报表元素大全** 这两部分是手册的重点,详细阐述了如何构建和控制...
3. **JasperReport初级教程(2_0_3)图文详解_绝对原创 - 川江号子_cn - CSDN博客.mht**:针对JasperReport的基础教程,结合实例进行讲解。 4. **JasperReport初级教程(2_0_3)调用Java代码_图文详解_绝对原创 - 川江...
《iReport3.7详解教程》是一份针对报表设计工具iReport 3.7的详尽指南,旨在帮助用户熟练掌握这款强大的报表设计软件。iReport是Jaspersoft公司开发的一款开源报表工具,它允许用户使用Java编程语言和SQL查询来创建...
本篇文章将详细讲解iReport 5.6.0的安装与配置过程,以及如何利用其进行报表制作。 一、iReport 5.6.0的安装 1. 下载安装包:首先,你需要从官方网站或者第三方可靠的下载源获取iReport 5.6.0的安装包。文件名为...
2. **工作区和界面介绍**:讲解IReport的工作界面,包括菜单栏、工具栏、报告设计区等,以及如何在这些区域中进行操作。 3. **字段和数据源**:解释如何添加和管理数据源,如JDBC、XML、CSV等,并演示如何将数据...
本篇文章将详细讲解如何使用iReport来绘制报表,包括简单的报表设计和交叉报表(crosstable)的绘制步骤。 1. **安装与启动iReport** 在开始绘制报表之前,你需要先下载并安装iReport。访问官方网站获取最新版本的...
本教程将详细讲解如何在本地环境中安装iReport for Eclipse插件,以便在Eclipse集成开发环境中无缝地进行报表设计。 首先,你需要从官方网站或其他可信的资源下载iReport的安装版本。安装文件通常包含一个可执行的...
它详细讲解了iReport的基本操作,如安装、界面介绍、数据源的设置、字段的添加、样式和表达式的应用等。此外,还可能涉及到了如何使用报表元素(如表格、图表、文本框等)以及如何进行报表布局和分组。 "jaspersoft...
- "JasperReports+ireports制作PDF报表.pdf"可能详细讲解了如何使用ireport设计PDF报表,并可能包含示例代码和步骤。 - "JasperReport.pdf"可能涵盖JasperReports库的基础知识和高级特性。 - "JasperReports+3.5+for...