反饋已提交

網絡繁忙

多個報表匯出一個Excel

1. 概述

1.1 應用場景

在報表統計分析中,常常希望將某類報表或者不同參數的同一報表匯總匯出到一個 Excel 中,每張報表對應一個 sheet。如下圖所示,地區銷售量統計報表,匯出後,將每個地區的資料單獨作為一個 sheet 匯總於一個 Excel 中。如下圖所示:

1.2 實現原理

實現將某類報表或者不同參數的同一報表匯總匯出到一個 Excel 中,可以透過Java 程式呼叫帆軟匯出 API 實現。將報表範本讀入 Java 程式,給範本中參數指派,將不同參數值對應的報表內容在工作簿排放好,對應 Excel 的不同Sheet ,最後匯出Excel。

1)讀入範本:

// 未執行範本工作薄
TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(
"GettingstartedTW.cpt");

2)以第一個執行後的結果工作薄 workbook 作為容器,新增其他地區的統計報表,因此先將 workbook 中的第一個 sheet 重新命名為華東,表示華東地區的資料。

// 參數值為China計算結果,將結果儲存至rworkbook
Parameter[] parameters = workbook.getParameters();
java.util.Map parameterMap = new java.util.HashMap();
for (int i = 0; i < parameters.length; i++) {
parameterMap.put(parameters[i].getName(), "華東");
}
PageWorkBook rworkbook = (PageWorkBook)workbook.execute(parameterMap,new PageActor());    
rworkbook.setReportName(0, "華東");

3)改變參數值後,將華北地區的執行結果加入工作簿。

rworkbook.setReportName(0, "華東");
改變參數值為華北,執行獲得結果報表 PageReport,加入結果工作薄
// 清空parametermap,將參數值改為華北,計算後獲得ResultReport
parameterMap.clear();
for (int i = 0; i < parameters.length; i++) {
parameterMap.put(parameters[i].getName(), "華北");
}
PageWorkBook rworkbook2 = (PageWorkBook)workbook.execute(parameterMap,new PageActor());
PageReport rreport2 = rworkbook2.getPageReport(0);
rworkbook.addReport("華北", rreport2);

4)匯出工作薄

// 定義匯出流
FileOutputStream outputStream;
// 將結果工作薄匯出為Excel檔案
outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));PageExcelExporter excelExport = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook));  
ExcelExport.export(outputStream, workbook.execute(parameterMap));

2. 範例

下面實現後台匯出 GettingStarted.cpt 範本,匯出後華東、華北地區的資料分 sheet 展示。

2.1 準備編譯環境

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

在編輯器工程中引入 FineReport 工程 JAR 包。包括安裝的報表工程

  • %FR_HOME%\webapps\webroot\WEB-INF\lib目錄下 fine 開頭的 12 個 JAR 包。

  • %FR_HOME%\webapps\webroot\WEB-INF\lib目錄下的 sqlite-jdbc.jar

  • %Tomcat_HOME%\libTomcat目錄下的 servlet-api.jar

  • %JAVA_HOME%\jdk\lib JDK 目錄下的 tools.jar

  • slf4j-simple-1.7.25.jar ,點選可下載:slf4j-simple-1.7.25.rar

  • 如果報表中需要查詢資料庫,還需要匯入對應的 jdbc 驅動或者插件的 JAR 包(如使用 JSON 資料集,就要引入 JSON 資料集插件下的 JAR 包)。

詳細引入程式可參考:編譯Java程式 

2.2 編寫 Java 程式

在編輯器中編寫 Java 程式 ExportReports.java,即引入必要類後,獲取範本,將範本匯出成兩個 Sheet 的 Excel。完整程式碼可參見:

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

https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/io/ExportReports.java

2.3 編譯 Java 檔案

Java 程式編寫完成後,在編譯器中編譯 ExportReports.java ,編譯透過後,就會在程式碼中匯出路徑的資料夾生成ExcelExport1.xls檔案,這樣就匯出成功了。如下圖所示:

開啟該檔案,便可以看到,不同地區的資料已經分別作為一個 sheet 儲存至一個 Excel 中了。如下圖所示:

附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙