几年以前的程序员们,你们用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(); } } }
注意,上下的数据库配置要一样。
兄台,就是想让用户点击一个柱子,就能显示出这个柱子表示的东西的走势图(折线图)。
这个功能需要自己添加。
兄台,我又来请教了!我想让jfreechart的柱状图能交互一下。能指点一下不?
我访问你的网站很慢,方便的话,能不能加我qq:379888552
什么样的交互?
我用的是DH的空间,国外的,所以速度会慢点。
兄台,咋这么有缘呢?
前段时间要做msn,搜索到你这里,这次想做报表,又搜索到你这里!!
这么多报表,我都晕了,能推荐一个不? 我的要求比较简单,推荐一个上手快的。多谢多谢!!!
呵呵 。。。那好啊。
个人比较推荐ireport+jfreechart