下载jar和ireport:
http://jasperforge.org/
下载Jar开发包和设计器iReport, iReport的版本要和Jar的版本一致,目前下载版本是5.6.0的。
1. 使用ireport,画完报表,配置JDBC作为数据源,保存jrxml文件。(这部分讲解,后面找时间补充下)
2. API解析原理,此图见源代码包中的JasperReports-Ultimate-Guide-3.pdf文档中:
首先是JRXML文件,就是我们所说的模版,用来生成报表的模版,里面会有模版的样式啊,内容等的信息。
这个XML文件通过JasperReports里面的JRXmlLoader.load("xxx")方法来解析XML文件,并生成JasperDesign对象,JasperDesign再通过JRCompiler.compileReport(JasperDesign jasperDesign)编译出JasperReport对象,JasperReport再通过JasperFillManager填充数据,生成相应的JasperPrint对象,然后再分两步,可以选择导出或者打印出来。
这个XML文件通过JasperReports里面的JRXmlLoader.load("xxx")方法来解析XML文件,并生成JasperDesign对象,JasperDesign再通过JRCompiler.compileReport(JasperDesign jasperDesign)编译出JasperReport对象,JasperReport再通过JasperFillManager填充数据,生成相应的JasperPrint对象,然后再分两步,可以选择导出或者打印出来。
3. 实现示例,采用直接连接数据库的方式:
public void exportWithJdbc() throws JRException, ClassNotFoundException, SQLException { String jdbcUrl = "jdbc:mysql://..."; String dbUser = "..."; String dbPassword = "..."; Class.forName("com.mysql.jdbc.Driver"); JasperReport jasperReport; JasperPrint jasperPrint; try (Connection con = DriverManager.getConnection(jdbcUrl, dbUser, dbPassword)) { jasperReport = JasperCompileManager.compileReport("test.jrxml"); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("ProductCategory", 0); parameters.put("VendorNumber", "ALL"); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, con); JasperExportManager.exportReportToHtmlFile(jasperPrint, "test.html"); } catch (JRException e) { e.printStackTrace(); } }
扫描二维码关注公众号,回复:
575669 查看本文章
4. 如果项目中使用Spring的话,还可以实现Spring提供的一些类,比如JasperReportsHtmlView等。