历史版本36 :报表参数界面API 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 描述编辑
在设计器中可以通过对参数界面的设计来控制参数的显示形式,如参数界面的布局、背景、显示方式等。那如何在程序中控制参数的相关属性呢?
FineReport中通过ReportParameterAttr类来实现。以下具体介绍该类的使用方法,比如需要通过程序实现参数界面背景色为绿色,并且居中显示,在BS端预览实现效果如下:
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. 示例编辑
在一般情况下,若您希望在FineReport设计器基础上进行二次开发,我们可以在Eclipse或idea中通过调用FineReport启动类来启动设计器,以便于开发过程中的调试和二次开发的准备。
注意需要引入FineReport设计器下的jar包,详细点击Eclipse中启动设计器。
如我们将Parameter.cpt模板的参数界面改为弹出式的,并设置参数窗口标题为“参数属性parameterAttr的使用”,完整代码如下:
package com.fr.io;
import com.fr.base.background.ColorBackground;
import com.fr.base.operator.common.CommonOperator;
import com.fr.chart.activator.ChartBaseActivator;
import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator;
import com.fr.data.impl.config.activator.RestrictionActivator;
import com.fr.env.operator.CommonOperatorImpl;
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.store.StateServerActivator;
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(),
new ChartBaseActivator());
SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
String envpath= "//Applications//FineReport10_325//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(
"//Users//susie//Downloads//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盘,即D:\\newParameter.cpt
执行程序,将在对应路径下生成新的cpt模板,打开生成的模板,在浏览器端预览模板,就会看到如下图所示的效果。
如果需要设置其他属性您可以使用该程序试验其他属性的设置效果。