使用 Java 填充 JasperReport 模板

共同要求

无论数据如何呈现,所有报告都会获取报告模板和参数图的路径。变量用于以下所有示例:

// Parameters passed into the report.
Map<String, Object> parameters = new HashMap<>();

// Arbitrary parameter passed into the report.
parameters.put("KEY", "Value");

// The compiled report design.
String path = "path/to/template.jasper";

使用 .jrxml 文件会产生额外的编译步骤,这在大多数情况下是不必要的。除非你在报告运行之前编写了自定义软件来更改 .jrxml(例如,动态添加或删除列),否则请使用 .jasper 文件,如后续示例所示。

使用数据库连接

// Establish a database connection.
Connection connection = DriverManager.getConnection(url, username, password); 

// Fill the report, get the JasperPrint that can be exported to desired format.
JasperPrint jasperPrint = JasperFillManager.fillReport(
  path, parameters, connection); 

使用自定义数据源

// Populate this list of beans as per your requirements.
List<Bean> beans = new ArrayList<>();

// Wrap the beans in a beans in a JRBeanCollectionDataSource.
JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(beans);

// Fill the report, get the JasperPrint that can be exported to desired format.
JasperPrint jasperPrint = JasperFillManager.fillReport(
  path, parameters, datasource);

没有数据源,未使用的细节带

// Fill the report, get the JasperPrint that can be exported to desired format.
JasperPrint jasperPrint = JasperFillManager.fillReport(path, parameters);

如果没有数据源,则必须设置 JasperReport 元素上的属性 whenNoDataType="AllSectionsNoDetail",否则将生成空(空白)报告。