在netBeans下实现报表功能
? 最近一个项目中要求报表打印功能,而在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”类编写如下代码,让你的应用程序使用你刚刚设计的报表:
at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:247)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)
at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:53)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:236)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:162)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:132)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)
at net.sf.jasperreports.engine.component.ComponentsEnvironment.findComponentBundles(ComponentsEnvironment.java:90)
at net.sf.jasperreports.engine.component.ComponentsEnvironment.getCachedComponentBundles(ComponentsEnvironment.java:78)
at net.sf.jasperreports.engine.component.ComponentsEnvironment.getComponentBundles(ComponentsEnvironment.java:66)
at net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.getSchemaLocations(JRReportSaxParserFactory.java:157)
at net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.configureParser(JRReportSaxParserFactory.java:138)
at net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.createParser(JRReportSaxParserFactory.java:103)
at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1332)
at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1307)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:205)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:199)
at testireport.NewClass.main(NewClass.java:33)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.Resource
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 21 more
Java Result: 1