最近一个项目中要求报表打印功能,而在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(); } } }