如何通过java在dynamicreports中生成动态列

时间:2015-02-04 14:15:14

标签: java arrays swing jasper-reports dynamic-reports

我写了一个应用程序,收集有关客户的详细信息,并使用Jasper Dynamic Report生成月度报告。 到目前为止,我的报告显示了所有字段,有些客户端可能是空白,而其他客户端则是空白。

我想创建一个动态报表,只为每个客户端选择非空列。 为了实现我已经为:

创建了数组

aggregationSubtotalBuilder, TextColumnBuilder, ConditionalStyleBuilder, StyleBuilder,

所以不要这样做

TextColumnBuilder<Double> offLine  = col.column "OffLine","offline",type.doubleType());
TextColumnBuilder<Double> onLine   = col.column("OnLine","online",type.doubleType());

。 。

我这样做:

for (int i = 0; i < activeColumns.length; i++) 
  {
     activeColumnsForDataSource[i] = activeColumns[i];
     textColumnBuilder[i] = col.column("\"" + activeColumnsForDataSource[i] + "\"","\"" + activeColumns[i] + "\"",type.doubleType()).setTitleFixedHeight(30);
     conditionStyleBuilder[i] = stl.conditionalStyle(cnd.unEqual(textColumnBuilder[i], 0)).setFontSize(12).bold();
     styleBuilder[i] = stl.style().conditionalStyles(conditionStyleBuilder[i]).setBorder(stl.pen1Point());

     textColumnBuilder[i].setStyle(styleBuilder[i]).setHorizontalAlignment(HorizontalAlignment.CENTER);
     aggregationSubtotalBuilder[i] = sbt.sum(textColumnBuilder[i]).setLabel("סהכ" + activeColumns[i]).setLabelStyle(sumLabelStyle).setStyle(dataNameStyle);

其中“activeColumns”是一个数组,其中包含我要添加的所有活动列的名称。

我遇到的一个问题是我有一个Date列,应该始终显示,并且它是一个字符串类型:

TextColumnBuilder<String> dayDate  = col.column("תאריך","date",type.stringType()).setStyle(rowNamesStyle);

因此我无法将其添加到TextColumnBuilder数组中。 如何将其添加到报告中?

构建中的

() 如果我做这样的事情

.columns(//add columns
             textColumnBuilder,dayDate)
       .columnGrid(
             textColumnBuilder,dayDate)

它只显示我添加的最后一项,即DayDate。

我该怎么办?

请帮忙!

谢谢。

戴夫。

1 个答案:

答案 0 :(得分:0)

列(textColumnBuilder).addColumn(的DayDate)

并删除ColumnGrid。

现在正在工作:)