反饋已提交
網絡繁忙
可以透過 java 程式讀取一個範本,讀取後在程式中修改報表的屬性,然後重新匯出成範本檔案。如下圖所示,讀取範本檔案Parameter.cpt,在程式中修改 A1 儲存格的字體為紅色,然後匯出成範本檔案,匯出後在設計器開啟範本,A1 儲存格字體變成紅色。
1)讀取某一路徑下的範本 cpt 檔案,並將其轉為 WorkBook 物件,有兩種讀取報表的方法:
直接以檔案絕對路徑讀取;
先定義報表運作環境,然後從運作環境中直接讀取相對路徑下的範本。
絕對路徑讀取範本:
WorkBook workbook = (WorkBook) TemplateWorkBookIO.readTemplateWorkBook("//doctw//Primary//Parameter//範本參數.cpt");
讀取報表運作環境:
// 定義報表運作環境,用於執行報表String envpath = "C:\\FineReport_10.0\\webapps\\webroot\\WEB-INF";//工程路徑SimpleWork.checkIn(envpath);module.start();
2)修改報表儲存格屬性
// 獲得WorkBook中的WorkSheet,進而修改A1儲存格的文字色彩色為紅色TemplateElementCase report = (TemplateElementCase) workbook.getReport(0);// getCellElement(int column, int row),column和row都從0開始,因此A1儲存格便是第0欄第0列 CellElement cellA1 = report.getCellElement(0, 0);FRFont frFont = FRFont.getInstance();frFont = frFont.applyForeground(Color.red);Style style = Style.getInstance();style = style.deriveFRFont(frFont);cellA1.setStyle(style);
3)將修改過的範本重新匯出
//儲存範本FileOutputStream outputStream = new FileOutputStream(new File("C:\\test\\newParameter1.cpt"));((WorkBook) workbook).export(outputStream);
以下範例讀取內建範本 Parameter.cpt 修改 A1 儲存格字體樣式後,將結果匯出成 cpt 檔案。
編譯程式前,需先建立一個 Java 工程環境,並且需要一個 Java 編輯器,如 Eclipse 或 idea 。
在編輯器工程中匯入 FineReport 工程 JAR 包。包括使用者自己報表工程
%FR_HOME%/lib下的所有的包,
%FR_HOME%/server/lib 下的所有包,
%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,
還要引入 JDK 下的 tools.jar。詳細操作可參考:編譯Java程式
在編輯器中編寫 Java 程式 SimpleDemo.java,即讀取內建範本 Parameter.cpt 修改 A1 儲存格字體樣式後,將結果匯出成 cpt 檔案。完整程式碼可參見:
注:使用者使用時,注意將範例程式碼中的工程路徑、範本名稱和匯出路徑取代為使用者自己工程下的。
package com.fr.io;import com.fr.base.Style;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.FRFont;import com.fr.general.I18nResource;import com.fr.health.activator.ModuleHealActivator;import com.fr.main.impl.WorkBook;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.cell.CellElement;import com.fr.report.elementcase.TemplateElementCase;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 SimpleDemo { public static void main(String[] args) { // 首先需要定義執行所在的環境,這樣才能正確讀取資料庫資訊 // 定義報表運作環境,用於執行報表 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(); try { WorkBook workbook = (WorkBook) TemplateWorkBookIO .readTemplateWorkBook( "//doctw//Primary//Parameter//範本參數.cpt"); // 獲得WorkBook中的WorkSheet,進而修改A1儲存格的文字色彩色為紅色 TemplateElementCase report = (TemplateElementCase) workbook .getReport(0); // getCellElement(int column, int // row),column和row都從0開始,因此A1儲存格便是第0欄第0列 CellElement cellA1 = report.getCellElement(0, 0); FRFont frFont = FRFont.getInstance(); frFont = frFont.applyForeground(Color.red); Style style = Style.getInstance(); style = style.deriveFRFont(frFont); cellA1.setStyle(style); // 儲存範本 FileOutputStream outputStream = new FileOutputStream(new File( "/Users//susie//Downloads//newParameter1.cpt")); ((WorkBook) workbook).export(outputStream); } catch (Exception e) { e.printStackTrace(); } finally { SimpleWork.checkOut(); } }}
Java 程式編寫完成後,在編譯器中編譯 SimpleDemo.java ,編譯透過後,就會在程式碼中匯出路徑的資料夾下生成修改過的新檔案 newParameter1.cpt,這樣就實現了讀取範本後修改範本。用設計器開啟匯出範本,可以看到,A1 儲存格的顏色變成了紅色。如下圖所示:
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙