📜  JasperReports-填充报告(1)

📅  最后修改于: 2023-12-03 15:31:28.023000             🧑  作者: Mango

JasperReports-填充报告

JasperReports是一个Java库,用于创建和填充各种类型的报表。本文将着重介绍如何使用JasperReports来填充报告。

安装JasperReports

JasperReports可以从官方网站下载,或者使用Maven或Gradle来添加依赖。

使用官方网站下载

到JasperReports官方网站,下载适合您项目需求的JasperReports版本。

链接:https://community.jaspersoft.com/project/jasperreports-library/releases

使用Maven添加依赖

在项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.12.2</version>
</dependency>
使用Gradle添加依赖

在项目的build.gradle文件中添加以下依赖:

dependencies {
    implementation 'net.sf.jasperreports:jasperreports:6.12.2'
}
填充报告

下面是一个简单的示例,演示如何使用JasperReports来填充报告。

public class ReportFiller {
    public void fillReport(String reportPath, Map<String, Object> parameters, JRDataSource dataSource) throws JRException {
        JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportPath);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
        JasperExportManager.exportReportToPdfFile(jasperPrint, "report.pdf");
    }
}

该例子展示了使用JasperReports填充报告所需的步骤:

  1. 加载JasperReports模板文件:首先,使用JRLoader的loadObjectFromFile()方法从文件系统中加载JasperReports模板文件。

  2. 填充JasperReports报告:JasperReports提供了一个JasperFillManager.fillReport()方法,用于填充报告。该方法接受几个参数,包括报告模板、参数和数据源。填充报告将生成一个JasperPrint对象。

  3. 输出JasperReports报告:JasperReports提供了一个JasperExportManager.exportReportToPdfFile()方法,用于输出报告文件。该方法接受两个参数,包括生成的JasperPrint对象以及输出文件的路径。

参数化报告

使用JasperReports填充报告时,您可以将参数传递给报告。以下是一个简单示例,展示如何传递参数:

public void fillReportWithParameters(String reportPath, String outputFilePath, Map<String, Object> parameters, JRDataSource dataSource) throws JRException {
    JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportPath);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
    JasperExportManager.exportReportToPdfFile(jasperPrint, outputFilePath);
}

在该方法中,我们添加了一个参数Map<String, Object>,可以在报告中使用这些参数。

使用JasperReports的数据源

JasperReports支持多种数据源类型,包括:

  • JRDataSource
  • JRResultSetDataSource
  • JRXmlDataSource
  • JRXlsDataSource
  • JRCsvDataSource
  • JRPdfDataSource
  • JRHibernateDataSource

在本文中,我们将演示如何使用基于JavaBean的JRBeanCollectionDataSource数据源。

基于JavaBean的数据源

使用基于JavaBean的数据源时,您需要创建一个JavaBean类,并将需要在报告中显示的数据保存在该类中。

public class Person {
    private String firstName;
    private String lastName;
    private int age;
    // 实现getters和setters
}

我们需要创建一个数据源来填充该类。为此,我们可以创建一个JRBeanCollectionDataSource对象,该对象接受一个Java集合。

List<Person> personList = new ArrayList<>();
personList.add(new Person("Joe", "Smith", 35));
personList.add(new Person("Mary", "Jones", 25));
personList.add(new Person("John", "Doe", 40));

JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(personList);

接下来,我们可以将数据源传递给填充报告的填充方法。

fillReport(reportPath, parameters, dataSource);
结语

这就是使用JasperReports填充报告的基本方法。我们学习了如何安装JasperReports,以及如何使用基于JavaBean的数据源填充报告。JasperReports还提供了更多功能,请查看官方文档以获取更多信息。