- 浏览: 53936 次
- 性别:
- 来自: 北京
最新评论
-
alvin198761:
楼主如何调价图标呢
自定义带关闭按钮的TabbedPane -
carlkkx:
Disney2002 写道carlkkx 写道生成PDF,然后 ...
关于JTable的打印讨论 -
Disney2002:
carlkkx 写道生成PDF,然后打开PDF阅读器,然后用户 ...
关于JTable的打印讨论 -
carlkkx:
生成PDF,然后打开PDF阅读器,然后用户爱怎么打印怎么打印。 ...
关于JTable的打印讨论 -
Disney2002:
<div class="quote_title ...
JasperReport 个人使用的一些经验
本文主要介绍下我在工作中使用JasperReport的一些经验,顺便给自己也做个笔记。
关于JasperReport的介绍就不谈了,网上多了去了,不了解的朋友可以去Google下先,这里主要分享经验和技巧,避免一些网友走弯路。
1、关于iReport的使用
JasperReport的使用简单归结就是报表模板+数据填充。
模板是通过一个后缀名为jrxml的XML文件,编译后生成的以.jasper为后缀的JasperReport模板。模板设计目前基本上都是使用其官方的可视化工具iReport来做的,iReport是基于Netbeans的一个插件,通过它可以可视化的编辑JasperReport模板。
数据填充一般分二种方式,一种方式是通过JDBC连接提供数据源,一种就是通过javaBean的集合提供数据源,可以根据自己的情况来选择。
iReport插件安装后,需要设置你在iReport里面使用的类的类路径,这个好多朋友在开始的时候找不到,截个图可以看看:
一般都是Add Folder,如果是已经打成Jar的可以直接选择Add Jar。
2、报表结尾的署名位置
一般报表最后都会有一行关于XXX填写啊,日期啊之类的用于确认或者一些辅助数据。
大家可能会直接放在Page Footer里面,这样打印出来的结果是这一行肯定会在页面底部,不能随着内容的长短来调整位置,哪怕你报表只有一行。这里分享个经验,你可以放到Summary里面,这样就可以根据Detail的长短来显示了。
3、子报表
关于子报表估计是好多网友关心的问题,因为大部分时间需要用到,可是关于这类的教程又太少了,这里我就介绍下如何使用子报表,内容参考了网上的一些资料.
准备工作:
1.主对象,就是报表要打印的对象,里面含一个List,这个需要用子报表来打印.
2.子报表对象
3.子报表数据集,测试数据
4.主报表数据集,测试数据
5.准备好上述数据后,开始在iReport上操作了,绑定测试数据源到iReport.
MainVO的测试数据源:
SubVO的测试数据源:
6.准备好数据源后开始设计JasperReport模板
模板和对象绑定,在MainVOReport(上图)的空白处点一下,然后点击数据库那个小图标:
会打开下面界面,选择DataSource Provider:
点击Get Field from datasource, 会获取到MainVo的属性,如上图下半部分所示.
7.子报表关联
我们需要将MainVo中的List属性值显示在子报表里面,就需要设置一个变量来传值了.
1)在MainVOReport界面,添加一个Variables, 命名为other,设置如下图所示:
2)然后点击MainVOReport界面上的子报表,在右边的属性设置如下图:
3)创建Scriptlet,用来连接设置变量值
上面三步就是创建子报表的重要三步,我刚开始也是这里没摸索到.
8.子报表设计
子报表的设计和主报表是一样的,因为它在这里是一个单独的报表,可以用自己的数据源来测试,也就是我们上面创建的SubFactory
子报表对象绑定,由于主报表和子报表使用的数据源不同,对象属性绑定方式稍有不同,如下图所示:
9.编译报表
不同的报表选择不同的数据源来编译.
选择相对应的数据源后,点击报表工具栏上的preview来预览,预览时会先编译,然后填充数据,有问题的话这个时候会暴露出来,根据错误提示自己再查找查找原因吧.
子报表变动要先编译子报表,然后编译主报表.
好了,目前就先分享到这里, 上面自己的分享如果有不对之处,欢迎大家提出,并分享.
顺便分享几个链接,对于学习JasperReport比较有帮助,这边文章的部分内容也参考了下面的链接:
1、ireport + jasperreport(上中下)
http://wangyaodi.iteye.com/blog/214496
http://wangyaodi.iteye.com/blog/214500
http://wangyaodi.iteye.com/blog/214504
2、利用复合的javabean构造基于jasperreports的子报表 (子报表内容基本上参考自这里)
http://blog.csdn.net/lemonfamily/archive/2007/04/05/1553291.aspx
貌似对于这类情况,只能手动通过编程来实现, JasperDesign这个类就是做这个事情的.
看看这个例子:
http://sunsy.iteye.com/blog/98140
正在研究ing
关于JasperReport的介绍就不谈了,网上多了去了,不了解的朋友可以去Google下先,这里主要分享经验和技巧,避免一些网友走弯路。
1、关于iReport的使用
JasperReport的使用简单归结就是报表模板+数据填充。
模板是通过一个后缀名为jrxml的XML文件,编译后生成的以.jasper为后缀的JasperReport模板。模板设计目前基本上都是使用其官方的可视化工具iReport来做的,iReport是基于Netbeans的一个插件,通过它可以可视化的编辑JasperReport模板。
数据填充一般分二种方式,一种方式是通过JDBC连接提供数据源,一种就是通过javaBean的集合提供数据源,可以根据自己的情况来选择。
iReport插件安装后,需要设置你在iReport里面使用的类的类路径,这个好多朋友在开始的时候找不到,截个图可以看看:
一般都是Add Folder,如果是已经打成Jar的可以直接选择Add Jar。
2、报表结尾的署名位置
一般报表最后都会有一行关于XXX填写啊,日期啊之类的用于确认或者一些辅助数据。
大家可能会直接放在Page Footer里面,这样打印出来的结果是这一行肯定会在页面底部,不能随着内容的长短来调整位置,哪怕你报表只有一行。这里分享个经验,你可以放到Summary里面,这样就可以根据Detail的长短来显示了。
3、子报表
关于子报表估计是好多网友关心的问题,因为大部分时间需要用到,可是关于这类的教程又太少了,这里我就介绍下如何使用子报表,内容参考了网上的一些资料.
准备工作:
1.主对象,就是报表要打印的对象,里面含一个List,这个需要用子报表来打印.
import java.util.List; public class MainVO { private String title; private List<SubVO> subList; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public List<SubVO> getSubList() { return subList; } public void setSubList(List<SubVO> subList) { this.subList = subList; } }
2.子报表对象
public class SubVO { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
3.子报表数据集,测试数据
import java.util.ArrayList; import java.util.List; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class SubFactory { public static JRDataSource createDatasource() { List<SubVO> list2 = new ArrayList<SubVO>(); SubVO svo1 = new SubVO(); svo1.setName("单位1"); SubVO svo2 = new SubVO(); svo2.setName("单位2"); SubVO svo3 = new SubVO(); svo3.setName("单位3"); SubVO svo4 = new SubVO(); svo4.setName("单位4"); list2.add(svo1); list2.add(svo2); list2.add(svo3); return new JRBeanCollectionDataSource(list2); } }
4.主报表数据集,测试数据
import java.util.ArrayList; import java.util.List; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRAbstractBeanDataSourceProvider; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; /** * * @author xiaoquan */ public class TestSubReport extends JRAbstractBeanDataSourceProvider { public TestSubReport() { super(MainVO.class); } public JRDataSource create(JasperReport arg0) throws JRException { List<MainVO> mainList = new ArrayList<MainVO>(); List<SubVO> list1 = new ArrayList<SubVO>(); List<SubVO> list2 = new ArrayList<SubVO>(); SubVO svo1 = new SubVO(); svo1.setName("单位1"); SubVO svo2 = new SubVO(); svo2.setName("单位2"); SubVO svo3 = new SubVO(); svo3.setName("单位3"); SubVO svo4 = new SubVO(); svo4.setName("单位4"); list1.add(svo4); list1.add(svo3); list2.add(svo1); list2.add(svo2); list2.add(svo3); MainVO vo1 = new MainVO(); vo1.setTitle("场1"); vo1.setSubList(list1); MainVO vo2 = new MainVO(); vo2.setTitle("场2"); vo2.setSubList(list2); mainList.add(vo2); mainList.add(vo1); return new JRBeanCollectionDataSource(mainList); } public void dispose(JRDataSource arg0) throws JRException { } }
5.准备好上述数据后,开始在iReport上操作了,绑定测试数据源到iReport.
MainVO的测试数据源:
SubVO的测试数据源:
6.准备好数据源后开始设计JasperReport模板
模板和对象绑定,在MainVOReport(上图)的空白处点一下,然后点击数据库那个小图标:
会打开下面界面,选择DataSource Provider:
点击Get Field from datasource, 会获取到MainVo的属性,如上图下半部分所示.
7.子报表关联
我们需要将MainVo中的List属性值显示在子报表里面,就需要设置一个变量来传值了.
1)在MainVOReport界面,添加一个Variables, 命名为other,设置如下图所示:
2)然后点击MainVOReport界面上的子报表,在右边的属性设置如下图:
3)创建Scriptlet,用来连接设置变量值
import java.util.List; import net.sf.jasperreports.engine.JRAbstractScriptlet; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRScriptletException; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class MainReportScriptlet extends JRAbstractScriptlet { @Override public void afterDetailEval() throws JRScriptletException { System.out.println("afterDetailEval..."); List subList = (List)getFieldValue("subList"); JRDataSource jr = new JRBeanCollectionDataSource(subList); /** *该值是在父报表中定义的一个变量Variables, *类型为net.sf.jasperreports.engine.JRDataSource *(就是上图的变量设置) **/ setVariableValue("other", jr); } @Override public void beforeReportInit() throws JRScriptletException { } @Override public void afterReportInit() throws JRScriptletException { } @Override public void beforePageInit() throws JRScriptletException { } @Override public void afterPageInit() throws JRScriptletException { } @Override public void beforeColumnInit() throws JRScriptletException { } @Override public void afterColumnInit() throws JRScriptletException { } @Override public void beforeGroupInit(String arg0) throws JRScriptletException { } @Override public void afterGroupInit(String arg0) throws JRScriptletException { } @Override public void beforeDetailEval() throws JRScriptletException { } }
上面三步就是创建子报表的重要三步,我刚开始也是这里没摸索到.
8.子报表设计
子报表的设计和主报表是一样的,因为它在这里是一个单独的报表,可以用自己的数据源来测试,也就是我们上面创建的SubFactory
子报表对象绑定,由于主报表和子报表使用的数据源不同,对象属性绑定方式稍有不同,如下图所示:
9.编译报表
不同的报表选择不同的数据源来编译.
选择相对应的数据源后,点击报表工具栏上的preview来预览,预览时会先编译,然后填充数据,有问题的话这个时候会暴露出来,根据错误提示自己再查找查找原因吧.
子报表变动要先编译子报表,然后编译主报表.
好了,目前就先分享到这里, 上面自己的分享如果有不对之处,欢迎大家提出,并分享.
顺便分享几个链接,对于学习JasperReport比较有帮助,这边文章的部分内容也参考了下面的链接:
1、ireport + jasperreport(上中下)
http://wangyaodi.iteye.com/blog/214496
http://wangyaodi.iteye.com/blog/214500
http://wangyaodi.iteye.com/blog/214504
2、利用复合的javabean构造基于jasperreports的子报表 (子报表内容基本上参考自这里)
http://blog.csdn.net/lemonfamily/archive/2007/04/05/1553291.aspx
评论
2 楼
Disney2002
2009-07-21
Disney2002 写道
现在遇到一个问题,如果报表模板列不定怎么来打印呢?
比如有个表格是动态生成的,列不定,这样的话报表模板如何来设计?
比如有个表格是动态生成的,列不定,这样的话报表模板如何来设计?
貌似对于这类情况,只能手动通过编程来实现, JasperDesign这个类就是做这个事情的.
看看这个例子:
http://sunsy.iteye.com/blog/98140
正在研究ing
1 楼
Disney2002
2009-07-20
现在遇到一个问题,如果报表模板列不定怎么来打印呢?
比如有个表格是动态生成的,列不定,这样的话报表模板如何来设计?
比如有个表格是动态生成的,列不定,这样的话报表模板如何来设计?
发表评论
-
关于JTable的打印讨论
2009-11-10 15:59 2128Java中用Table显示数据是再正常不过的了,有各种各样的T ... -
JFreechart使用技巧
2009-07-27 18:50 10231.自定义纵轴的数值显示位数 Number ... -
再遇 java.util.ConcurrentModificationException
2009-07-22 11:07 2888今天又一次遇到java.util.ConcurrentModi ... -
Java对象的浅拷贝和深拷贝
2009-07-21 22:45 2356首先介绍变量拷贝,变量拷贝时,原始变量和拷贝的新变量引用同一个 ... -
Swing Table上的常用技巧
2009-07-14 15:45 36161、自定义列宽 TableColumnModel col ... -
C3P0 导致 Tomcat无法关闭?
2008-11-14 14:58 3578----请版主手下留情啊,这个问题目前搜索不到,要是能搜索到也 ... -
远程访问Tomcat的JMX
2008-10-20 16:02 2407Tomcat的JMX支持默认应该是关闭的,首先我们得打开Tom ... -
用Java动态代理实现AOP
2008-08-23 22:42 1081AOP主要应用于日志记录 ... -
通过Java生成Excel文件
2008-08-14 16:58 7347package demo; import java. ... -
共享下JFreeChart的Developer.Guide v1.0.9
2008-06-29 22:15 1400JFreeChart 的Developer.Guide 不好找 ... -
No configuration found for the specified action
2008-06-20 18:53 2779用惯了Struts1.1的朋友,在用struts2时可能会出现 ... -
List 分页封装及结合Struts2使用
2008-06-18 22:06 25751. 核心类: import java.util.Arra ... -
关于JCS
2008-06-18 21:22 1179关于JCS «‹›» JCS是Jaka ... -
自定义带关闭按钮的TabbedPane
2008-06-13 14:32 3468package test; import javax ... -
转载:session介绍
2008-06-01 00:07 1345摘要: 虽然session机制在web应用程序中被采用已经很长 ...
相关推荐
- 分享个人项目经验有助于新手快速上手,减少学习曲线。 5. **文档资源** - 尽管官方文档可能需要付费,但社区提供的翻译和教程可以作为补充学习资料。 - 作者分享的 Word 形式的文档将包含更详细的信息和实例,...
2. **这几天在弄ireport.doc**:可能是个人的学习笔记,记录了作者使用IReport时的经验和技巧。 3. **JasperReport初级教程(2_0_3)图文详解_绝对原创 - 川江号子_cn - CSDN博客.mht**:针对JasperReport的基础教程,...
- 强调Java相关的专业技能,例如熟悉Struts、Hibernate、Spring等框架,掌握JSP、Servlet、jQuery等Web开发技术,了解JBPM工作流和报表技术如JasperReport、JFreeChart,以及Oracle、SQL Server等数据库的开发经验。...
8. **iReport研究.txt** - 可能是作者对iReport的一些个人研究或者心得,可能包含了非官方的技巧或经验分享。 9. **jasperReportDemo2** - 这可能是一个JasperReport的示例项目,包含了一些实际的代码和配置文件。 ...
此外,他还掌握了JBPM工作流技术、JasperReport和JFreeChart报表技术,并有过Oracle和SQL Server数据库开发经验。 在【部分内容】中,这位Java软件设计师强调了自己的项目经验和职责,比如在电力工程综合管理系统...
第二篇总结则聚焦于技术领域的个人成长和工作经验。作者在这一年里,经历了技术团队的领导角色,阅读了多本热门技术书籍以拓宽视野,尽管没有深入研究,但对各种技术有了整体认识。他参与了多个项目,其中涉及到技术...
在个人简历中,Java软件设计师需要突出其专业技能、项目经验和教育背景,以便吸引潜在雇主的注意。 【核心知识点】: 1. **Java编程**:作为Java软件设计师的基础,精通Java语言,包括面向对象编程概念、类、接口、...
这篇个人简历展示了一位拥有扎实Java软件设计能力的求职者,他专注于Web应用程序开发,并具有实际项目经验。这位求职者在江西理工大学获得了计算机科学与技术的本科学位,并且已经积累了1年多的工作经验,主要在民营...
【Java软件设计师个人简历知识...在准备Java软件设计师的个人简历时,应当注重展示上述技术技能、项目经验和专业素养,以增加获得面试机会的可能性。同时,不断更新技能以适应快速发展的IT行业,也是保持竞争力的关键。
Java 程序员个人简历 基本信息 姓名、性别、年龄、出生日期、婚姻状况、身高、目前所在地、户口所在地、工作年限、英语水平、英语级别、计算机、第二外语、水平、最高学历、专业、目前岗位、软件工程师/程序员、...
- **拥有交通工具**:对于一些需要频繁外出的职位来说是个加分项。 - **获奖情况**:如有获得技术类奖项,则更佳。 - **推荐人**:具有行业影响力的推荐人能够提升简历的可信度。 综上所述,通过这份个人简历的例子...
- **数据库**:有Oracle和Sqlserver的开发经验,能使用SQL进行数据库操作。 5. **项目经验**: - **办公自动化(OA)系统**:负责合同管理和系统公共模块,体现了对业务流程的理解和编程能力。 - **电力工程综合...
【程序员简历模板08.doc】是一个为程序员设计的简历模板,用于展示个人的教育背景、技能专长、项目经验和自我评价。以下是对该简历中涉及的IT知识点的详细说明: 1. **学历与专业**:计算机科学与技术是IT领域的...
这包括在每份简历上附上个人照片,保持简历格式清晰、突出重点,附上相关证件复印件,使用统一的纸张规格,将简历和附件整齐装订,选择合适的信封,准确填写应聘岗位,提供有效的联系方式,以及确保简历易于打开阅读...
1. 用户管理:包括用户注册、登录、个人信息管理等功能,可能用到Java Servlet和JSP(Java Server Pages)技术。 2. 音像品管理:音像品的添加、删除、修改和查询,以及分类管理,可能涉及到Java集合框架和多线程...
1. **避免罗列岗位职责**:简历中的“工作经历”部分应重点突出个人的业绩和成果,而不是简单列举岗位职责。例如,可以具体说明自己在项目中承担的角色、解决的问题以及取得的成绩。 2. **精简且突出重点**:简历...