下载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();
}
}
4. 如果项目中使用Spring的话,还可以实现Spring提供的一些类,比如JasperReportsHtmlView等。