历史版本34 :报表参数界面API 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

在设计器中可以通过对参数界面的设计来控制参数的显示形式,如参数界面的布局、背景、显示方式等。那如何在程序中控制参数的相关属性呢?

FineReport中通过ReportParameterAttr类来实现。以下具体介绍该类的使用方法,比如需要通过程序实现参数界面背景色为绿色,并且居中显示,在BS端预览实现效果如下:

222

2. 原理编辑

2.1 读取报表参数属性ReportParameterAttr
若我们已经读取了一个模板并将其保存为WorkBook对象,如下

1)读取模板保存为WorkBook对象

WorkBook workbook = (WorkBook) TemplateWorkBookIO.readTemplateWorkBook("\\doc\\Primary\\Parameter\\Parameter.cpt");
我们就可以读取该WorkBook对象的参数属性,从而控制报表参数属性了。
2)获取WorkBook工作薄的参数属性ReportParameterAttr
ReportParameterAttr paraAttr = workbook.getReportParameterAttr();
2.2 参数界面的布局
/* 参数界面的布局 * 0 : 靠左 * 1 :居中 * 2 : 靠右 */ paraAttr.setAlign(1);
2.3 设置参数背景
/* * 设置参数界面背景 * ColorBackground :颜色背景 * GradientBackground :渐变色背景 * ImageBackground :图片背景 * PatternBackground :图案背景 * TextureBackground :纹理背景 */ Background background = ColorBackground.getInstance(new Color(0, 255, 255)); paraAttr.setBackground(background);
2.4 重新设置参数属性
改变了一系列参数属性后,需要将改变后的ReportParameterAttr重新添加至WorkBook中
// 重新设置参数属性,导出最终结果  workbook.setReportParameterAttr(paraAttr);

3. 示例编辑

如我们将Parameter.cpt模板的参数界面改为弹出式的,并设置参数窗口标题为“参数属性parameterAttr的使用”,完整代码如下:
package com.fr.io; import com.fr.base.background.ColorBackground; import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.ConfigurationActivator; import com.fr.data.impl.config.activator.RestrictionActivator; import com.fr.general.Background; import com.fr.io.exporter.EmbeddedTableDataExporter; import com.fr.main.impl.WorkBook; import com.fr.main.parameter.ReportParameterAttr; import com.fr.module.Module; import com.fr.module.tool.ActivatorToolBox; import com.fr.report.ReportActivator; import com.fr.report.module.ReportBaseActivator; import com.fr.serialization.SerializationActivator; import com.fr.startup.WorkspaceRegister; import com.fr.store.StateServerActivator; import com.fr.workspace.engine.WorkspaceActivator; import com.fr.workspace.server.ServerWorkspaceRegister; import com.fr.workspace.simple.SimpleWork; import java.awt.Color; import java.io.File; import java.io.FileOutputStream; public class SetParameterWindow { public static void main(String[] args) { try { // 定义报表运行环境,用于执行报表 Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(), new ConfigurationActivator(), new StateServerActivator(), new ReportBaseActivator(), new RestrictionActivator(), new ReportActivator()); String envpath = "C:\\FineReport_10.0\\webapps\\webroot\\WEB-INF";//工程路径 SimpleWork.checkIn(envpath); module.start(); WorkBook workbook = (WorkBook) TemplateWorkBookIO .readTemplateWorkBook( "\\doc\\Primary\\Parameter\\Parameter.cpt"); // 获取WorkBook工作薄的参数属性ReportParameterAttr  ReportParameterAttr paraAttr = workbook.getReportParameterAttr(); /* 参数界面的布局 * 0 : 靠左 * 1 :居中 * 2 : 靠右 */ paraAttr.setAlign(1); /* * 设置参数界面背景 * ColorBackground :颜色背景 * GradientBackground :渐变色背景 * ImageBackground :图片背景 * PatternBackground :图案背景 * TextureBackground :纹理背景 */ Background background = ColorBackground.getInstance(new Color(0, 255, 255)); paraAttr.setBackground(background); // 重新设置参数属性,导出最终结果  workbook.setReportParameterAttr(paraAttr); FileOutputStream outputStream = new FileOutputStream(new File( "C:\\test\\newParameter.cpt")); EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter(); templateExporter.export(outputStream, workbook); } catch (Exception e) { e.printStackTrace(); } finally { SimpleWork.checkOut(); } } }
注:定义报表运行环境需要根据实际设计器的安装路径,比如安装在C盘,即 String envPath = "C:\\FineReport_10.0\\webapps\\webroot\\WEB-INF"
执行程序,将在D盘生成新的cpt模板,打开生成的模板,在浏览器端预览模板,就会看到如下图所示的效果。
222

如果需要设置其他属性您可以使用该程序试验其他属性的设置效果。