首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

JReport入门及事例(iReport)

2012-10-29 
JReport入门及例子(iReport)准备工作:1、下载JReport:http://down10b.zol.com.cn/bianchengtools/333513_ir

JReport入门及例子(iReport)
准备工作:

1、下载JReport:http://down10b.zol.com.cn/bianchengtools/333513_ireport300.zip?key=287ff4fc316487d19e8c5537ba13d7e4

??? 图文教程下载:http://files.blogjava.net/luodaijun/ireport%E5%9B%BE%E6%96%87%E6%95%99%E7%A8%8B.zip

2、下载安装MySQL:http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.5/mysql-5.5.11-win32.msi

在test中建个test表,有id和name字段

JReport入门及事例(iReport)

JReport入门及事例(iReport)

3、安装JDK、eclipse,这个就不用说了吧。

制作报表:

请参考 图文教程 中的操作,自己动手做出一张报表,这里我不在细说,只要展示id和name字段就行了。

JReport入门及事例(iReport)

保存为classic.jrxml文件,我放在E:\rpt下面。注意,这个一般放在项目目录中,以后使用相对路径,现在我使用的绝对路径,我只是测试一下,到时候要使用流来读取。

编码调用报表

在eclipse中建立一个java项目

TestBean类,是一个普通bean,跟数据库中字段一样就好了,有set get方法

import java.io.File;import java.io.FileInputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import net.sf.jasperreports.engine.JRDataSource;import net.sf.jasperreports.engine.JasperCompileManager;import net.sf.jasperreports.engine.JasperFillManager;import net.sf.jasperreports.engine.JasperPrint;import net.sf.jasperreports.engine.JasperReport;import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import net.sf.jasperreports.view.JasperViewer;public class Test {/** * @param args */public static void main(String[] args) {try {JasperReport jr = null;JasperPrint jp = null;FileInputStream fis = new FileInputStream(new File("E:\\rpt\\classic.jrxml"));jr = JasperCompileManager.compileReport(fis);Map<String, String> map = new HashMap<String, String>();// map.put("id", "test"); //这里是传参数的 必须先在ireport 中定义好 参数// map.put("name", "test");JRDataSource dataSource = new JRBeanCollectionDataSource(getTest());jp = JasperFillManager.fillReport(jr, map, dataSource);JasperViewer.viewReport(jp);} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection() {String driver = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://localhost/test";String userName = "root";String password = "root";Connection conn = null;try {Class.forName(driver);conn = DriverManager.getConnection(url, userName, password);} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return conn;}public static List<TestBean> getTest() {List<TestBean> list = new ArrayList<TestBean>();String sql = "select id,name from test";Connection conn = null;Statement stmt = null;ResultSet rs = null;try {conn = getConnection();stmt = conn.createStatement();rs = stmt.executeQuery(sql);while (rs.next()) {TestBean tb = new TestBean();tb.setId(rs.getInt("id"));tb.setName(rs.getString("name"));list.add(tb);}} catch (SQLException e) {e.printStackTrace();}try {if (rs != null) {rs.close();}if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}return list;}}

具体代码见附件。

JReport入门及事例(iReport)

注意事项:

1、必须使用JDK5,我刚开始使用JDK6一直报错,找不到原因,各位不要再绕弯路了

2、使用了FileInputStream来读取E:\rpt\classic.jrxml这个文件,这个是绝对路径

3、我使用了JRBeanCollectionDataSource ,报表中有自己的DataSource,我不知道怎么使用,就用JDBC写了一个。但是从项目角度考虑,我们一个项目肯定使用一个数据源,所以如果每次调用报表,都使用报表自己的数据源是不可取的,但是自己的DataSource确很好维护,直接改变SQL语句就能修改了,所以请达人告诉我怎么直接调用JReport的DataSource,不胜感激。

4、项目中所用的lib可以在ireport的软件的lib下面找到,只有MySQL的JDBC需要自己去下载驱动。

?

?

热点排行