最近一个项目中要求报表打印功能,而在Java中一直没有找到合适的报表设计工具。到网上找了好久, 8) 终于被我找到了——就是iReport,它是基于JasperReports的报表设计工具。
我下载的是它的netbeans插件版,安装和使用起来都非常方便。那么我在这里谈一下的它的下载、安装到使用。
1 下载:请点击这个链接下载:http://sourceforge.net/project/showfiles.php?group_id=64348&package_id=263429
在下载这个插件之前,你还需要下载netbeans 6.0.1或 6.1 版可以到http://www.netbeans.org网站上去下载。
2 安装:看下面的图解。
下载完成后,先安装netbeans,启动netbeans,选择“工具-插件-已下载-添加插件”如下图:
选择你下好的“iReport-nb-0.9.1.nbm”插件,然后点击“安装”这样插件就可以安装了。
3 安装之后,我们先设计一个报表。
先使用“服务”创建一个数据库连接:
添加驱动(右键,新建驱动程序),如果你使用的是SQL SERVER数据库请到这里下载驱动:
在“数据库”上“右键”点击“新建连接...”选择你下载并解压后的驱动程序包“sqljdbc.jar”,然后再创建连接:
设置连接信息,这是连接SQL SERVER 2005 或 2000的设置:
如果添加成功,在“服务——数据库”下会出现下列的连接(可以点击右键选择“连接...”,使它连接到数据库):
4 报表数据库源添加,在工具栏上点击这个按钮:
会出现
这时点击“new”,选择“NetBeans Database JDBC connection”
选择你新建的连接,输入一个“Name”如图:
5 制作报表。
在netbeans中新建一个普通的Java项目(“文件——新建项目...”):
新建项目后,再新建一个报表文件(“文件——新建文件...”):
在后面的向导中选择文件存放的位置,再选择相应的数据库源,之后(编写查询或使用“Design Query”设置一个查询):
再选择报表中要使用的列:
选择分组字段:
“下一步”选择风格:
“下一步——完成”形成报表,点击“Preview”预览效果:
6 在应用程序中使用你的报表。
为你的应用程序添加“库”:
选择库:
编写代码测试:
请新建一个类或使用项目的“Main”类编写如下代码,让你的应用程序使用你刚刚设计的报表:
package testireport;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRResultSetDataSource;
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.view.JasperViewer;
/**
*
* @author GuoJun-ling
*/
public class NewClass {
public static void main(String[] args) {
JasperReport jasperReport;
JasperPrint jasperPrint;
try {
InputStream inReport = NewClass.class.getResourceAsStream("report1.jrxml");
jasperReport = JasperCompileManager.compileReport(inReport);
// 建立连接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String strUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=pubs";
Connection con = DriverManager.getConnection(strUrl, "sa", "sa");
Statement stmt = con.createStatement();
// 在使用iReport设计了报表之后可以使用连接对象直接填充报表。
jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), con);
// 打印预览
JasperViewer.viewReport(jasperPrint);
// 关闭资源
//rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}