反饋已提交

網絡繁忙

報表參數介面API

1. 概述

1.1 應用場景

在設計器中可以透過對參數介面的設計來控制參數的顯示形式,如參數介面的佈局、背景、顯示方式等。那如何在程式中控制參數的相關屬性呢?,如下圖所示,修改參數面板的背景為綠色,並且置中顯示。

Snipaste_2025-06-18_14-09-52.png

1.2 實現原理

FineReport 中透過 ReportParameterAttr 類來實現。以下具體介紹該類的使用方法。

1)讀取報表參數屬性 ReportParameterAttr

若已經讀取了一個範本並將其儲存為 WorkBook 物件,如下

WorkBook workbook = (WorkBook) TemplateWorkBookIO.readTemplateWorkBook("//doctw//Primary//Parameter//範本參數.cpt");

就可以讀取該 WorkBook 物件的參數屬性,進而控制報表參數屬性。

獲取 WorkBook 工作薄的參數屬性 ReportParameterAttr

ReportParameterAttr paraAttr = workbook.getReportParameterAttr();

2)調整參數介面的佈局

/* 參數介面的佈局 
 * 0 : 靠左 
 * 1 :置中 
 * 2 : 靠右 
 */  
paraAttr.setAlign(1);

3)設定參數背景

/* 
 * 設定參數介面背景 
 * ColorBackground :顏色背景 
 * GradientBackground :漸變色背景 
 * ImageBackground :圖片背景 
 * PatternBackground :圖案背景 
 * TextureBackground :紋理背景 
 */ 
Background background = ColorBackground.getInstance(new Color(0, 255, 255));
paraAttr.setBackground(background);

4)重新設定參數屬性

改變了一系列參數屬性後,需要將改變後的 ReportParameterAttr 重新新增至 WorkBook 中

//重新設定參數屬性,匯出最終結果 workbook.setReportParameterAttr(paraAttr);

2. 範例

以下範例讀取內建範本 Parameter.cpt 修改參數面板樣式後,將結果匯出成 cpt 檔案。

2.1 準備編譯環境

編譯程式前,需先建立一個 Java 工程環境,並且需要一個 Java 編輯器,如 Eclipse 或 idea 。

在編輯器工程中匯入 FineReport 工程 JAR 包。包括使用者自己報表工程

%FR_HOME%/lib下的所有的包,

%FR_HOME%/server/lib 下的所有包,

%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,

還要引入 JDK 下的 tools.jar。詳細操作可參考:編譯Java程式 

2.2 編寫 Java 程式

在編輯器中編寫 Java 程式 SetParameterWindow.java,即讀取內建範本 Parameter.cpt 後修改參數面板樣式後,將結果匯出成 cpt 檔案。完整程式碼可參見:

注:使用者使用時,注意將範例程式碼中的工程路徑、範本名稱和匯出路徑取代為使用者自己工程下的。

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.cluster.engine.activator.standalone.StandaloneModeActivator;
import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator;
import com.fr.env.operator.CommonOperatorImpl;
import com.fr.general.Background;
import com.fr.general.I18nResource;
import com.fr.health.activator.ModuleHealActivator;
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.RestrictionActivator;
import com.fr.report.module.ReportBaseActivator;
import com.fr.report.write.WriteActivator;
import com.fr.scheduler.SchedulerActivator;
import com.fr.store.StateServiceActivator;
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 ResourceRepositoryActivator(),
                    new StandaloneModeActivator(),
                    new ModuleHealActivator(),
                    new StateServiceActivator(),
                    new ChartBaseActivator(),
                    new SchedulerActivator(),
                    new ReportBaseActivator(),
                    new RestrictionActivator(),
                    new ReportActivator(),
                    new WriteActivator());
            SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
            String envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";//工程路徑
            SimpleWork.checkIn(envpath);
            I18nResource.getInstance();
            module.start();
            WorkBook workbook = (WorkBook) TemplateWorkBookIO
                    .readTemplateWorkBook(
                            "//doctw//Primary//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();
        }
    }
}


2.3 編譯 Java 檔案

Java 程式編寫完成後,在編譯器中編譯 SetParameterWindow.java ,編譯透過後,就會在程式碼中匯出路徑的資料夾下生成修改過的新檔案 newParameter.cpt,這樣就實現了讀取範本後修改參數面板屬性後匯出。

開啟生成的範本,在瀏覽器端預覽範本,就會看到參數介面背景色為綠色且置中顯示。如下圖所示:

Snipaste_2025-06-18_14-09-52.png

附件列表


主題: 二次開發
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙