如何通过 java 在 dynamicreports 中生成动态列
how to generate dynamic columns in dynamicreports via java
我编写了一个应用程序,用于收集有关客户的详细信息并使用 Jasper Dynamic Report 生成月度报告。
到现在为止,我的报告显示了所有字段,有些客户可能是空白的,而其他客户可能是完整的。
我想制作一个只为每个客户选择非空列的动态报告。
为此,我为 :
创建了数组
聚合小计生成器,
文本列生成器,
条件样式生成器,
样式生成器,
所以不要这样做
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 Array 中。
我怎样才能将它添加到报告中?
在构建中()
如果我这样做
.columns(//add columns
textColumnBuilder,dayDate)
.columnGrid(
textColumnBuilder,dayDate)
它只会显示我添加的最后一项,即 DayDate。
我能做什么?
请帮忙!
谢谢。
戴夫。
列(textColumnBuilder).addColumn(dayDate)
并删除 ColumnGrid。
现在开始工作了:)
我编写了一个应用程序,用于收集有关客户的详细信息并使用 Jasper Dynamic Report 生成月度报告。 到现在为止,我的报告显示了所有字段,有些客户可能是空白的,而其他客户可能是完整的。
我想制作一个只为每个客户选择非空列的动态报告。 为此,我为 :
创建了数组聚合小计生成器, 文本列生成器, 条件样式生成器, 样式生成器,
所以不要这样做
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 Array 中。 我怎样才能将它添加到报告中?
在构建中() 如果我这样做
.columns(//add columns
textColumnBuilder,dayDate)
.columnGrid(
textColumnBuilder,dayDate)
它只会显示我添加的最后一项,即 DayDate。
我能做什么?
请帮忙!
谢谢。
戴夫。
列(textColumnBuilder).addColumn(dayDate)
并删除 ColumnGrid。
现在开始工作了:)