如何在ireport中创建动态列?

时间:2014-09-02 06:29:05

标签: java jasper-reports ireport

我有不同的列,所以我想在一个jasper报告中显示动态列。但主要的是列是不同的。

是否有可能在jasper报告中编写java代码?

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

是..你可以使用Dynamic Jasper。您可以添加动态列并根据需要设置所有参数以进行配置。它简单易行。在这里,我给出了一些有用的类名,您可以通过它们实现相同的目标。

  • JRDesignBand
  • JRDesignElementGroup
  • JRDesignField
  • JRDesignTextField
  • JRDesignExpression
  • JRDesignSection

答案 1 :(得分:0)

您无需在java代码中执行此操作。

您可以在jrxml文件中执行此操作。

例如: 您需要根据条件在一个jrxml文件中显示2列。

两个字段是CASH RECIEPT,CARD RECIEPT。

将它们放在jrxml文件中几乎相同的位置,其中包含站点差异以确保避免错误(红色标记错误。)

首先接受CASH RECEIPT

右键单击它并查看其属性。

然后找到Print When Expression(这是您可以应用条件的地方,应该为true来打印列。)并转到它。

添加你的表达(条件。)  它是这样的                         $ F {card} .equals(“0”)?真假                            这必须根据你的情况改变。 这里发生的事情是,当jrxml文件中卡片字段的值为零时,它将打印CASH RECEIPT列

对CARD RECEIPT做同样的事情。

   print when expression  is as follow

                     $F{card}.equals( "1" ) ? true : false

    What will do this is ,CARD RECEIPT will be Printed when card field is hold the value 1.

答案 2 :(得分:0)

我使用了DynamicReports,有一些选项

https://dynamicreports.lbayer.com/examples/examples-overview/

您可以在运行时添加列。

private void printReport() throws DRException {
    AdhocConfiguration configuration = new AdhocConfiguration();
    AdhocReport report = new AdhocReport();

    // column name list
    List<String> columnList = new ArrayList<>();
    columnList.add("Column 1");
    columnList.add("Column 2");
    columnList.add("Column 3");
    columnList.add("Column ...");
    columnList.add("Column n");
    for (String column : columnList) {
        AdhocColumn adhocColumn = new AdhocColumn();
        adhocColumn.setTitle(column);
        adhocColumn.setName(column);
        report.addColumn(adhocColumn);
    }
    configuration.setReport(report);

    String[] myArray = new String[columnList.size()];
    DRDataSource dataSource = new DRDataSource(columnList.toArray(myArray));

    dataSource.add("data1", "data2", "data3", "data ...", "data n");
    dataSource.add("data1", "data2", "data3", "data ...", "data n");

    JasperReportBuilder reportBuilder = AdhocManager.createReport(configuration.getReport());
    reportBuilder.setDataSource(dataSource);
    reportBuilder.show();
}