二次开发 >> 引擎API >> 报表调用 >> 报表参数界面API

报表参数界面API

顶( )
最后更新日期: 2019-10-16 人发表评论 (点击查看)
SetParameterWindow,参数界面API
在设计器中可以通过对参数界面的设计来控制参数的显示形式,如参数界面的布局、背景、显示方式等。那如何在程序中控制参数的相关属性呢?FineReport中通过ReportParameterAttr类来实现。以下具体介绍该类的使用方法,比如需要通过程序实现参数界面背景色为绿色,并且居中显示,在BS端预览实现效果如下:
1. 实现原理
1.1 读取报表参数属性ReportParameterAttr
若我们已经读取了一个模板并将其保存为WorkBook对象,如下
  1. WorkBook workbook = (WorkBook) TemplateWorkBookIO  
  2.                     .readTemplateWorkBook(FRContext.getCurrentEnv(),  
  3.                             "\\doc\\Primary\\Parameter\\Parameter.cpt");  
我们就可以读取该WorkBook对象的参数属性,从而控制报表参数属性了。
  1. ReportParameterAttr paraAttr = workbook.getReportParameterAttr();  
1.2 是否显示参数界面
/*
* 是否显示参数界面
* null : 不显示参数界面
* parameterUI对象 : 显示定义的参数界面
*/
paraAttr.setParameterUI(null);
/*
1.3 参数界面的布局
* 参数界面的布局
* 0 : 靠左
* 1 :居中
* 2 : 靠右
*/
  1. paraAttr.setAlign(2);  
1.4 是否延迟报表展示
/*
* 是否延迟报表展示
* true : 延迟报表展示
* false : 不延迟报表展示
*/
  1. paraAttr.setDelayPlaying(true)  
1.5 添加参数至参数窗口
/*
* 定义参数变量并添加参数至参数窗口中
*/
  1. Parameter para2 = new Parameter("time","2010-01-01");paraAttr.addParameter(para2);  
注意:addParameter是把新定义的参数变量添加入参数窗口,不会自动添加至参数界面,需要定义参数界面才可以将参数放入参数界面,如下图效果
1.6 设置参数界面背景
/*
* 设置参数界面背景
* ColorBackground :颜色背景
* GradientBackground :渐变色背景
* ImageBackground :图片背景
* PatternBackground :图案背景
* TextureBackground :纹理背景
*/
  1. Background background = ColorBackground.getInstance(new Color(0,255,255));paraAttr.setBackground(background);  
1.7 重新设置参数属性
改变了一系列参数属性后,需要将改变后的ReportParameterAttr重新添加至WorkBook中
//重新设置参数属性
  1. workbook.setReportParameterAttr(paraAttr);  
2. 具体实例
如我们将Parameter.cpt模板的参数界面改为弹出式的,并设置参数窗口标题为“参数属性parameterAttr的使用”,完整代码如下:
  1. package com.fr.io;    
  2.     
  3. import java.awt.Color;  
  4. import java.io.File;    
  5. import java.io.FileOutputStream;    
  6. import com.fr.base.FRContext;    
  7. import com.fr.base.ModuleContext;    
  8. import com.fr.base.background.ColorBackground;  
  9. import com.fr.dav.LocalEnv;  
  10. import com.fr.general.Background;  
  11. import com.fr.io.TemplateWorkBookIO;      
  12. import com.fr.io.exporter.EmbeddedTableDataExporter;  
  13. import com.fr.main.impl.WorkBook;  
  14. import com.fr.main.parameter.ReportParameterAttr;  
  15. import com.fr.report.module.EngineModule;  
  16.     
  17. public class SetParameterWindow {    
  18.     public static void main(String[] args) {    
  19.         try {    
  20.             // 定义报表运行环境,用于执行报表    
  21.             String envPath = "D:\\FineReport\\develop\\code\\build\\package\\WebReport\\WEB-INF";    
  22.             FRContext.setCurrentEnv(new LocalEnv(envPath));    
  23.             ModuleContext.startModule(EngineModule.class.getName());    
  24.             // 读取模板保存为WorkBook对象    
  25.             WorkBook workbook = (WorkBook) TemplateWorkBookIO    
  26.                     .readTemplateWorkBook(FRContext.getCurrentEnv(),    
  27.                             "\\doc\\Primary\\Parameter\\Parameter.cpt");    
  28.             // 获取WorkBook工作薄的参数属性ReportParameterAttr    
  29.             ReportParameterAttr paraAttr = workbook.getReportParameterAttr();    
  30.             /* 参数界面的布局 
  31.             * 0 : 靠左 
  32.             * 1 :居中 
  33.             * 2 : 靠右 
  34.             */  
  35.             paraAttr.setAlign(1);  
  36.             /* 
  37.             * 设置参数界面背景 
  38.             * ColorBackground :颜色背景 
  39.             * GradientBackground :渐变色背景 
  40.             * ImageBackground :图片背景 
  41.             * PatternBackground :图案背景 
  42.             * TextureBackground :纹理背景 
  43.             */  
  44.             Background background = ColorBackground.getInstance(new Color(0,255,255));  
  45.             paraAttr.setBackground(background);  
  46.             // 重新设置参数属性,导出最终结果    
  47.             workbook.setReportParameterAttr(paraAttr);    
  48.             FileOutputStream outputStream = new FileOutputStream(new File(    
  49.                     "D:\\newParameter.cpt"));    
  50.             EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();    
  51.             templateExporter.export(outputStream, workbook);    
  52.         } catch (Exception e) {    
  53.             e.printStackTrace();    
  54.         }    
  55.     }    
  56. }  
执行程序,将在D盘生成新的cpt模板,打开生成的模板,在浏览器端预览模板,就会看到如上图所示的效果。
如果需要设置其他属性您可以使用该程序试验其他属性的设置效果。
 
 
 
 
   
文明发言,用心评论
 
应用此篇文章,您:
不费力
研究了一会
琢磨了好久
 
查看全部条>>
Copyright©2019 帆软软件有限公司
苏ICP备18065767号-3