最近工作中用到报表,而我在学习JasperReport的过程中遇到了很多问题(主要是国内的资料太少了),网上很少找得到,在此我就把我找到的一些资料和大家共享,希望能对大家有所帮助。
1、JasperReport和iReport的资源,最新版本可以到下面官方网站得到
iReport官方网站:
http://ireport.sourceforge.net
JasperReport官方网站:
http://jasperreports.sourceforge.net
2、安装
1)、JDK的安装,并配置JAVA_HOME
比如我的JAVA_HOME路径如下:
JAVA_HOME D:\Program Files\j2sdk1.4.2_03
2)、由于中文的问题,所以还需要下载:itext-1.02b.jar和iTextAsian.jar包
下载地址:http://itext.sourceforge.net/downloads/iTextAsian.jar
并在CLASSPATH中设置
例如我的CLASSPATH如下:
CLASSPATH
E:\Program Files\Apache GroupTomcat4.1\webapps \estreport\WEB-INF\lib\itext-1.02b.jar;E:\Program
Files\Apache GroupTomcat 4.1\webapps\ estreport\WEB-INF\lib\iTextAsian.jar;E:\Program Files\Apache
GroupTomcat 4.1\webapps \estreport\WEB-INF\lib;D: \ools\iReport0.2.3\lib
3)、iReport的安装iReport只要解压就OK,如果没有安装Ant,可以直接在iReport下的noAnt目录下,
运行startup.bat就可以了,这样iReport就可以启动了
4)、JasperReport
Jasperreport不需要任何配置,你只需将下载以后的jar包放到classpath下即可
5)、数据库的JDBC驱动包
加入到CLASSPATH中
3、详细资源
iReport官方提供了一些关于iReport视频,对于初学者很有帮助:
地址:http://ireport.sourceforge.net/docs.html
JasperReport官方提供的使用指南
地址:http://jasperreports.sourceforge.net/tutorial/index.html
JasperReport提供的一些例子:
地址:http://jasperreports.sourceforge.net/samples/index.html
4、常见问题
1)、iReport中提示框输入中文是不能正常显示,请将iReport下lib中的这个包删除tinylaf.jar
2)、在iReport中运行报表时如果出现乱码问题,请检查itext-1.02b.jar和iTextAsian.jar这两个包是否加到CLASSPATH
3)、在jsp或servlet高度报表时出现乱码或不显示,请检查你在报表设计过程中所设置的字体及其编码
比如:pdfname、pdfencoding
5、下面是两个调试例子
Servlet:
import javax.servlet.*;
import javax.servlet.http.*;
import dori.jasper.engine.*;
import java.io.*;
import java.util.*;
import java.sql.*;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class TestReport extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn =
DriverManager.getConnection(
"jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=am;user=sa;password=sa");
ServletContext servletContext =this.getServletContext();
File reportFile = new File(servletContext.getRealPath("test/iteminfo.jasper"));
Map parameters = new HashMap();
Integer i=new Integer(8);
parameters.put("pjId", i);
byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.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();
} catch (JRException jre) {
System.out.println("JRException:" + jre.getMessage());
} catch (Exception e) {
System.out.println("Exception:" + e.getMessage());
}
}
public void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
1 首先看看
http://plateau.sicool.com/main.html
上的三篇ireport和Jasperreport整合开发报表向导(一)(二)(三)
看完理解并自己运行一下,OK,你入门了
2 去找一份TheJasperReportsUltimateGuide.1.0.pdf
看完之后你就能了解JasperReport生成的基本过程及原理,里面也回答了很多
刚接触这个报表工具会产生的疑问
3 论坛上的经验
Java研究的论坛上有很多关于JasperReport及iReport的经验及问题解答,所以
大家在提问的时候不妨多翻翻论坛上的帖子,很多你要问的问题都能找到答案,
还有很多宝贵的经验
当然说起论坛最正宗还是
https://sourceforge.net/projects/ireport/
https://sourceforge.net/projects/jasperreports/
大家可以到sourceforge.net去看看,论坛上提供搜索,也能翻到很多东西,顺便
练练你的英语
4 学习JasperReport的Samples
解压jasperreports-0.5.0-project.zip 后目录jasperreportsdemosamples
下的例子,看看这些例子是你关于这个报表工具提升能力的最好最快的方式,
我会在下面贴上各个例子的简要说明。
要运行sample下的例子,首先你要安装ant,并设置好环境变量
如ANT_HOME 值为 D:Installant161
然后到dos方式下,到某一个sample的目录,比如到
jasperreportsdemosamplesalterdesign目录下
运行 ant 则会编译报表文件
运行 ant view 则会展现报表
5 比上面更好的资料是什么?
就是JasperReport的源代码,看懂源代码,JasperReport
就是在你脑子里的了,你想干什么都行了,优化代码,覆写,继承他的类,实现个性
化的功能,甚至你可以参考他的思想,升华一下,做一个你自己的报表
1. alterdesign
该例子演示了报表编译后,在报表展现的时候如何动态的控制其中的元素
比如让某一个矩形变色或其他
2. antcompile
演示如何让 ant 来编译
3. chart
演示了如何在报表中添加图像,JasperReport是用Scriptlet的方式
往报表中添加图像,而Scriptlet是调用也是开源的jfreechart的Api来
生成图形,去jfreechart看一下,该工具能的图形生成能力也很强
4. datasource
演示了如何在报表中使用各种数据源,能够使用beanarray
beancollection,也可以用自定义的数据源,只要继承了JRDataSource的
两个接口,这个能给用户提供非常大的灵活性,报表的数据不用局限于一
条Sql语句,也可以使用存储过程,对生成报表中的数据也可以排序,二
次检索,等等
5. fonts
各种字体的演示
6. horizontal
演示了水平分栏的报表,演示报表中分了三栏,其中还用到了
textFieldExpression,就像if语句的效果来选择输出的内容
7. hyperlink
演示了各种样式的链接
8. images
演示了如何在报表中加入图像以及图像的显示方式
9. jasper
演示了分组分栏的报表,演示中用了2次group
10. jcharts
演示了调用另一个开源的API jcharts来往报表中加入分析图形,原理同
上chart,如果jfreechart都还不能满足你分析图形的要求,那到jcharts
里找找看吧,说不定有
11. landscape
演示横向的报表
12. nopagebreak
演示比如在IE中不分页的方式打印出报表的内容,通过这个演示也可以
了解报表输出如何配置参数
13. noreport
演示了如何直接通过java程序生成JasperPrint对象来输出
14. noxmldesign
演示了如何直接通过java程序生成JasperDesign对象来动态的生成报
表,根据这个例子,用户可以作出自定义选列的报表,当然比较麻烦,
而且肯定自己要补充他的API库
(JasperReport真是强大啊,呵呵)
15. pdfencrypt
演示了pdf的输出方式,可以给pdf文件加密码,其实就是pdf输出方式的
参数配置,具体有那些参数可配置,去看看API吧
16. printservice
演示了如何直接打印报表
17. query
演示了如何让查询的sql动态起来,比如你可以通过一个Jsp页面传
报表的sql的where条件,order条件,甚至整个sql语句
18. rotation
演示了文字纵向显示的报表
19. scriptlet
演示了如何继承JRDefaultScriptlet,并加入自己的处理语句,这个功能
可是很强大的哦,看看这些接口
beforeReportInit() afterReportInit() beforePageInit()
afterPageInit() beforeColumnInit() afterColumnInit()
beforeGroupInit(String groupName)
afterGroupInit(String groupName)
看看这些名字就知道你能完成那些功能,比如显示一列数据后,马上跟
上该列数据的分析图形,当然你也可以加上自己的方法并在报表中调用
20. shapes
演示了JasperReport中自带的图形,及能配置的参数
当然你也能继承或者覆写JasperReport中的Api生成你要的图形,
21. stretch
演示了如何处理报表中数据拉伸以及带来周围的线及框的拉伸,
你能了解到虽然黑框式表格不是JasperReport中缺省的展现方式,
但在JasperReport中不难实现
22. subreport
演示了子报表,还告诉你一个报表中可以有n个子报表,子报表中还可以
嵌套子报表
23. tableofcontents
演示了如何生成一个有目录的,复杂的报表
24. unicode
演示了各种 字符编码
25. webapp
演示了如何把报表放到一个JavaWeb项目中,可以用Jsp Servlet
applet,笔者做了一个有参数页面,可以选择html pdf applet
输出方式的报表,有兴趣的 我可以在后面放上代码
posted on 2006-01-21 11:22
千山鸟飞绝 阅读(4728)
评论(0) 编辑 收藏 所属分类:
Jasperreport