WEB报表之-iReport

Share

      几年以前的程序员们,你们用jfreechart的时候,是否还是自己编写jrxml文件呢?现在可以轻松点了,这里介绍iReport工具。
    http://jasperforge.org/sf/projects/ireport 这个是ireport的介绍和wiki
      http://jasperforge.org/sf/projects/jasperreports 这个是jasperreports的介绍和wiki
      我们都要用到,至于下载,以上的地方就有,ireport有windows版的和linux版的,配置好jdk之后,就可以运行了(linux下是ireport.sh ,windows 下的是ireport.exe或者是ireport.bat,这个不用我讲了吧)。
    首先ireport,设计一个打印的模板。
    
    开启ireport,设定一个数据来源,data->设定资料来源
    
      里面的设置就要自己选了,有java基础的应该知道了。
    点击档案->报表精灵->
      ,这里面你要填上你的查询语句。



然后,用这个,T的是代表一个label,f代表一个动态域(就是你查询出来的数据)。
下面点击建立-》编译 然后就可以运行了,同时在ireport的根目录会生成一个test.jasper文件,这里java程序里面就可以使用了。

下面是用这个文件生成pdf导出的代码。
    

/**
 * @author    leekooqi
 * @company   icnote (C) copyright
 * @time      2008-1-25  下午02:23:15
 * @version   1.0.0.0
 * @package   com.icnote.lee.test
 * @project   ireportTest
 */
package com.icnote.lee.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import org.hibernate.secure.JACCConfiguration;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 * @author leekooqi
 * 
 */
public class ReportJavaTest {

  /**
   * @return void
   * 
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    new ReportJavaTest().reportName();
  }

  public void reportName() {

    JRResultSetDataSource jrds = null;
    JasperPrint jasperPrint = null;
    Map reportParams = new HashMap();
    ResultSet rs = null;
    Connection con = null;
    Statement stmt = null;
    String sql = "select * from APP_LOG";
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@192.168.2.212:1521:KOYU";
//    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
//    String url = "jdbc:odbc:mdb";

    try {
      JasperReport jasperReport = (JasperReport) JRLoader
          .loadObject("C:\\test.jasper");
      Class.forName(driver);
      con = DriverManager.getConnection(url, "****", "****");
      stmt = con.createStatement();
      rs = stmt.executeQuery(sql);
      if (!rs.next())
        return;
      jrds = new JRResultSetDataSource(rs);
      jasperPrint = JasperFillManager.fillReport(jasperReport,
          reportParams, jrds);
      JasperPrintManager.printReportToPdfFile(jasperPrint, "c:/abcd.pdf");
    } catch (ClassNotFoundException ex) {
      ex.printStackTrace();
    } catch (SQLException ex) {
      ex.printStackTrace();
    } catch (JRException e) {
      e.printStackTrace();
    }

  }
}

注意,上下的数据库配置要一样。