数据报告 是收集和提交 资料 给负责编制统计资料的过程。准确的 数据报告 可以准确分析实地的事实; 不准确的数据报告可能导致错误的决策。数据报告中的常见问题可能是由于业务逻辑的变化或者是否需要增强 报告的核心逻辑,可能是由于子报表或多个图表。为了克服这些开销,引入了许多框架,工具,库和第三方应用程序。JasperReports是其中之一。
为什么选择JasperReports?
JasperReports是一个开源的Java报表引擎,没有自己的语法表达式。因此,它不能独立运行,并且需要嵌入到另一个客户端或服务器端的Java应用程序中。它适用于需要向其应用程序添加报告功能的Java开发人员。由于它是基于Java的,它可以在任何支持Java(JDK 1.3及更高版本)的平台上运行。所有JasperReport的功能都集中在一个JAR文件jasperreports-xxxjar中。JasperReports的主要目的是创建面向页面,准备以简单灵活的方式打印文档。
JasperReports的特点
JasperReports的一些重要功能是:
- 弹性报告布局。
- 可以以文字或图形方式呈现数据。
- 开发人员可以多种方式提供数据。
- 可以接受来自多个数据源的数据。
- 可以生成水印
- 可以生成子报表。
- 能够以各种格式导出报告。
报告设计模板
- 标题 - 标题包含报告的标题,并在报告开始时只显示一次。
- PageHeader - PageHeader出现在页面的顶部。它可能包含日期,时间,组织名称等。
- ColumnHeader - ColumnHeader包含特定的字段名称,如名称,地点等。
- 细节 - 这里包括特定字段的条目。
- ColumnFooter - ColumnFooter可能包含特定字段的摘要。
- PageFooter - PageFooter显示在报表的底部。它可能包含页数。
- 摘要 - 它包含从“细节”部分推断的信息,例如,列出每个作者工作的小时数后,每位作者工作的总时数可以放在像饼图,图表等可视化图表中,以获得更好的比较。
为我的示例报告设计的模板
- 编译报告 - 在这一步中,JRXML被编译成一个称为Jasper文件(* .jasper)的二进制对象。出于性能原因,此编译完成。Jasper文件是您的应用程序需要运行的文件,以便运行报告。
- 执行报告(将数据填充到报告中) - 在此步骤中,应用程序中的数据将填写在编译报告中。类net.sf.jasperreports.engine.JasperFillManager提供必要的功能来填充报表中的数据。创建了一个Jasper打印文件(* .jrprint),可用于打印或导出报告。
- 将报告导出为所需格式 - 在此步骤中,我们可以将上一步创建的Jasper打印文件导出为任何格式。由于Jasper提供各种形式的出口,因此具有相同的输入,我们可以创建数据的多个表示。
代码片段
- Connection con = null;
- try {
- // connection to the database
- String url = "jdbc:mysql://localhost:3306/registers";
- String username = "username";
- String password = "password";
- Class.forName("com.mysql.jdbc.Driver");
- con = (Connection) DriverManager.getConnection(url, username,
- password);
- String queryString = "select * from users";
- java.sql.Statement stmt = con.createStatement();
- ResultSet resultset = null;
- resultset = stmt.executeQuery(queryString);
- Map parameters = new HashMap();
- parameters.put("ReportTitle", "User Details");
- JRResultSetDataSource jasperReports = new JRResultSetDataSource(
- resultset);
- // compiling the report
- JasperReport sourceFile = JasperCompileManager.compileReport("/home/usr/sample/userReport.jrxml"); // give the fully qualified path of the .jrxml file
- //Executing the report
- JasperPrint jasperPrint = JasperFillManager.fillReport(
- sourceFile, parameters, jasperReports);
- //Exporting the report to docx file
- JRDocxExporter jasperDocx = new JRDocxExporter();
- ExporterInput exportInput = (ExporterInput) new SimpleExporterInput(
- jasperPrint);
- jasperDocx.setExporterInput(exportInput);
- OutputStreamExporterOutput jasperOutputDocx = new SimpleOutputStreamExporterOutput(
- "/home/usr/sample/userReport.docx"); //specify the path where we want to save the report
- jasperDocx.setExporterOutput(jasperOutputDocx);
- SimpleDocxExporterConfiguration simple = new SimpleDocxExporterConfiguration();
- jasperDocx.setConfiguration(simple);
- jasperDocx.exportReport();
- System.out.println("The jrxml is converted into docx");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
所需的库是
- 公地的BeanUtils-1.9.0
- 公地集合-3.2.1
- 公共沼气池-2.1
- dynamicreports核-3.0.0
- JasperReports的-6.1.0
- 共享记录-1.1.1
- MySQL的连接器的Java-5.1。