反饋已提交

網絡繁忙

Java直接呼叫報表列印

一、概述

  1. Java 後台可以直接呼叫報表列印的功能,列印後返回列印是否成功。下面詳細介紹實現程式。

二、原理

1
定義報表運作環境。

注:工程路徑根據實際情況修改。

// 首先需要定義執行所在的環境,這樣才能正確讀取資料庫資訊
        // 定義報表運作環境,用於執行報表
        Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
                new ConfigurationActivator(),
                new StateServerActivator(),
                new ReportBaseActivator(),
                new RestrictionActivator(),
                new ReportActivator());
        String envpath;//工程路徑
        envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";
        SimpleWork.checkIn(envpath);
        module.start();
2
定義執行範本工作薄。
TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("GettingStartedTW.cpt");
3
獲取報表參數並設定值。
// 參數傳值
Parameter[] parameters = workbook.getParameters();
HashMap<String, String> paraMap = new HashMap<String, String>();
paraMap.put(parameters[0].getName(), "華北");
4
Java 中呼叫報表列印方法並進行判斷。
  1. 透過公式【PrintUtils.printWorkBook(cptPath)】進行列印,此時不彈出列印視窗。

  2. 若需顯示列印選項對話框,則使用【PrintUtils.printWorkBook(cptPath, true)】,其中參數【true】為顯示列印選項對話框,如下代碼所示。

  3. 其中【printWorkBook()】返回值為 boolean 型,可透過返回值 【true】(列印成功)和 【false】(列印失敗)來判斷列印是否成功。

// Java 中呼叫報表列印方法
boolean a = PrintUtils.printWorkBook("GettingStartedTW.cpt", paraMap, true);
if (!a) {
      System.out.println("失敗啦!返回" + a);
} else {
      System.out.println("成功!返回" + a);
}

三、完整代碼

  1. 編譯前,需要先匯入 FineReport 工程 JAR 包,包括安裝工程包【%FR_HOME%/lib】下面的所有的包,【%FR_HOME%/server/lib】下面的所有包,【%FR_HOME%/webapps/webroot/WEB-INF/lib】下面的所有包,還需要引入 JDK 下 的【tools.jar】。如何操作可參考:編譯Java程序

  2. 編譯進行列印。

  3. 編譯該程式,彈出列印機設定視窗如下圖所示,選擇列印機就可以進行列印了,並在後臺返回結果:【成功!返回 true】。

注:工程路徑需要根據實際情況修改。

package com.fr.io;
import com.fr.base.Parameter;
import com.fr.config.activator.BaseDBActivator;
import com.fr.config.activator.ConfigurationActivator;
import com.fr.report.RestrictionActivator;
import com.fr.main.TemplateWorkBook;
import com.fr.module.Module;
import com.fr.module.tool.ActivatorToolBox;
import com.fr.print.PrintUtils;
import com.fr.report.ReportActivator;
import com.fr.report.module.ReportBaseActivator;
import com.fr.store.StateServiceActivator;
import com.fr.workspace.simple.SimpleWork;
import java.util.HashMap;
public class JavaPrint {
    public static void main(String[] args) {
        // 首先需要定義執行所在的環境,這樣才能正確讀取資料庫資訊
        // 定義報表運作環境,用於執行報表
        Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
                new ConfigurationActivator(),
                new StateServiceActivator(),
                new ReportBaseActivator(),
                new RestrictionActivator(),
                new ReportActivator());
        String envpath;//工程路徑
        envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";
        SimpleWork.checkIn(envpath);
        module.start();
        try {
            TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("GettingStartedTW.cpt");
            // 參數傳值
            Parameter[] parameters = workbook.getParameters();
            HashMap<String, String> paraMap = new HashMap<String, String>();
            paraMap.put(parameters[0].getName(), "華北");
            // java中呼叫報表列印方法
            boolean a = PrintUtils.printWorkBook("GettingStartedTW.cpt", paraMap, true);
            if (!a) {
                System.out.println("失敗啦!返回" + a);
            } else {
                System.out.println("成功!返回" + a);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            module.stop();
        }
    }
}

1.jpg

四、行動端

  1. 行動端不支援各種列印和匯出方式。


附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙