几年以前的程序员们,你们用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