報表開發之批量匯入匯出Excel
在日常使用報表過程中,會有這樣一種情況,你將Excel表分發給各個員工,員工填完後,統一整理成多個Excel,你需要將這些資料,用報表的填報功能,提交錄入到資料庫中,這樣一來可避免到伺服器機房錄資料的繁瑣步驟,但是無論是批量匯入和還是匯出Excel,這對諸多報表軟體或稱整合報表功能的系統來說都是不容易的。
解決Excel匯入的效能問題,可以利用FineReport開發的op=excel_submit功能,來實現不預覽報表即可對填報表匯入Excel。
根據報表工程的使用方式不同,批量匯入Excel中許可權控制方式有所不同。
報表工程一般有以下兩種方式:
1、使用FineReport自主開發的資料決策系統op=fs使用報表工程;
2、將報表工程整合到自己的系統中。
1.1 直接使用op=fs
使用者使用資料決策系統op=fs檢視報表,那麼所有的許可權都是通過op=fs進行認證,使用者也都是新增在op=fs中。
1.2 整合FR報表工程
使用者將FR報表工程整合到自己的系統中,通過自己的系統檢視報表,那麼FR所有的許可權都是通過報表平臺管理op=fr_platform進行認證,詳細請查許可權管理。
除了批量匯入,還有批量匯出。一張報表可以根據不同的條件統計出不同的資料結果,有時希望將每一種條件下的結果都儲存下來如匯出成Excel檔案至磁碟,可以在後臺呼叫FineReport的匯出介面ExcelExporter將每種情況下的結果批量儲存起來。
實現的原理是遍歷讀取para.txt中的每組引數值,將該引數值組合傳入模板進行計算,然後將結果匯出excel,迴圈直至最後一條引數組合。
例如:
由於我們需要對模板輸入引數對應的值才能夠計算得到最終的結果,因此我們需要所有可能的引數值組合,可以來源於資料庫中某個表,或者某個檔案。這裡我們假設所需的引數值組合儲存在WebReport\WEB-INF\para.txt中。如下圖新建para.txt
如果模板有兩個引數格式如下:
批量匯出程式,完整程式碼如下:
package com.fr.io; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.Arrays; import com.fr.base.FRContext; import com.fr.general.ModuleContext; import com.fr.dav.LocalEnv; import com.fr.io.exporter.ExcelExporter; import com.fr.main.TemplateWorkBook; import com.fr.main.workbook.ResultWorkBook; import com.fr.report.module.EngineModule; import com.fr.stable.StableUtils; import com.fr.stable.WriteActor; public class ExportBatch { public static void main(String[] args) { try { // 定義報表執行環境,用於執行報表 String envpath = "D:\\FineReport_7.1\\WebReport\\WEB-INF"; FRContext.setCurrentEnv(new LocalEnv(envpath)); ModuleContext.startModule(EngineModule.class.getName()); // 讀取環境下的模板檔案 TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(), "doc\\Primary\\DetailReport\\Details.cpt"); // 讀取用於儲存的引數值的txt檔案 File parafile = new File(envpath + "\\para.txt"); FileInputStream fileinputstream; fileinputstream = new FileInputStream(parafile); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileinputstream)); // 定義儲存引數的map,用於執行報表 java.util.Map paramap = new java.util.HashMap(); /* * 遍歷引數值所在txt檔案,txt檔案中引數儲存形式為 para1,para2 江蘇,陳羽 江蘇,安娜 首先取出第一行儲存引數名稱 * 遍歷每個引數組合,如para1=江蘇、para2=陳羽,根據引數執行模板,並將結果匯出excel excel檔名為名稱+匯出編號 */ // 讀第一行,儲存引數名稱 String lineText = bufferedReader.readLine(); lineText = lineText.trim(); String[] paraname = StableUtils.splitString(lineText, ","); System.out.println(Arrays.toString(paraname)); // 遍歷每個引數組合,執行模板,匯出結果 int number = 0; while ((lineText = bufferedReader.readLine()) != null) { lineText = lineText.trim(); String[] paravalue = StableUtils.splitString(lineText, ","); for (int j = 0; j < paravalue.length; j++) { paramap.put(paraname[j], paravalue[j]); } ResultWorkBook result = workbook.execute(paramap,new WriteActor()); OutputStream outputstream = new FileOutputStream(new File("E:\\ExportEg" + number + ".xls")); ExcelExporter excelexporter = new ExcelExporter(); excelexporter.export(outputstream, result); // 最後要清空一下引數map,用於下次計算 paramap.clear(); number++; outputstream.close(); } ModuleContext.stopModules(); } catch (Exception e) { e.printStackTrace(); } } }
上述為示例程式,其中報表執行環境與模板名稱等需要根據您實際環境進行修改。編譯執行該程式您便可以得到結果,在E盤根目錄下將生成3個Excel檔案,如下
內容分別為
這樣批量匯出便成功了。
相關推薦
報表開發之批量匯入匯出Excel
在日常使用報表過程中,會有這樣一種情況,你將Excel表分發給各個員工,員工填完後,統一整理成多個Excel,你需要將這些資料,用報表的填報功能,提交錄入到資料庫中,這樣一來可避免到伺服器機房錄資料的繁瑣步驟,但是無論是批量匯入和還是匯出Excel,這對諸多報表軟體或稱整合報
SSM整合開發實戰-poi匯入匯出excel-mvc三層模式開發體驗(福利:內附完整視訊教程)
前面幾篇部落格雖然簡單的介紹了基於SSM的框架實現POI匯入匯出的介紹,但是也就只是“簡單的介紹”而已,而且沒有物盡其用。即整合出來的SSM其實還可以做其他很多的事情,閒暇之餘我又基於SSM開發了“產品資訊”的“增加 刪除 修改 更新”功能,目的是為了體會體會目前企業
SSM整合開發實戰-poi匯入匯出excel-尾聲
前面介紹了ssm框架的整合開發以及後端介面部分的實現(如今對這些介面有了新的變動以及優化),本文將整合前端框架jquery-easyui來實現前後端介面的對接,更加直接的展示poi匯入匯出excel的效果。(視訊教程地址:https://edu.csdn.
SSM整合開發實戰-poi匯入匯出excel-開戰
上一篇部落格介紹瞭如何完整的基於ssm搭建一個可用於實戰開發的專案,本文開始將用此專案用來開發若干idea。本文就先小試牛刀開發基於ssm框架實現poi匯入匯出excel檔案,憑良心講,這一需求其實在目前企業級應用開發中幾乎都用得到,那麼本文我將基於自己在專案中遇到的需
easyui datagrid 增刪改查分頁 匯出 先上傳後匯入 NPOI批量匯入 匯出EXCEL
效果圖資料庫程式碼 create database CardManage use CardManage create table CardManage ( ID int identity(1,1) primary key, userDep nvarchar(10)n
poi批量匯入匯出Excel(一、需要建資料庫表)
本專案基於SSM框架,簡單封裝了Excel批量匯入匯出功能,需要建資料庫表將資料匯入到表中,查詢遍歷出資料匯出Excel,下一篇文章介紹下不用建資料庫表一鍵匯入匯出Excel(點選跳轉),不過這樣只適用於對匯入的Excel表進行轉換。一、下載poi jar包: 點這裡
poi批量匯入匯出Excel(三、通過模板匯出Excel並能實現匯入多個sheet表)
本專案基於SSM框架,簡單封裝了Excel批量匯入匯出功能,不用建資料庫表一鍵匯入匯出Excel,不過這樣只適用於對匯入的Excel表進行轉換,通過模板匯出Excel並且能實現匯入多個sheet表。上一篇介紹了建表匯入匯出Excel(點選跳轉)一、下載poi jar包:點這裡
java之poi操作excel-批量匯入匯出
上一篇博文介紹了poi操作excel的基本讀寫操作後,接下來,介紹一下在專案中的實際用途:批量匯入、批量匯出功能。因為重點知識介紹批量匯入匯出excel功能,故而專案整體的搭建後臺用jdbc與struts2,前端頁面用jquery-easyui實現(其實也可以整合到s
Excel批量匯入(匯出同理)
在做JavaWeb中新增資料使我們在所難免會遇到的,在大資料的環境下批量新增和批量刪除是必須的,而批量刪除只需要獲取到我們需要刪除的ID就可以了,在批量新增中我們就會遇到問題,問題是得到批量的資料,這就涉及到了poi技術中的Excel匯入匯出 在前端中我們使用
JasperReport報表開發之轉置交叉表
for 不同的 結構 整理 result 無需 nbsp 數據 img 使用Jasper或BIRT等報表工具時,常會碰到一些很規的統計,用報表工具本身或SQL都難以處理,比方源數據不符合交叉表的要求,須要轉置後再呈現。集算器具有結構化強計算引擎,集成簡單。能夠協
基於SSM的POI匯入匯出Excel實戰-鍾林森-專題視訊課程
基於SSM的POI匯入匯出Excel實戰—282人已學習 課程介紹 本課程將給大家分享如何基於SSM實現POI匯入匯出Excel,並講解目前企業級JavaWeb應用mvc三層模式的開
JSP匯入匯出Excel功能
匯入匯出功能需求是這樣的:按照條件查詢出結果,然後將這些結果以excel形式匯出;修改欄位資訊後(主鍵不允許修改)匯入即覆蓋原欄位資訊,完成更新。本例是藉助poi完成的,將poi-3.9.jar匯入到WEB-INF下的lib的資料夾,與此一起匯入的還有commons-io
NPOI匯入匯出Excel工具類
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Web;
讓 .NET 更方便的匯入匯出 Excel
讓 .Net 更方便的匯入匯出Excel Intro 因為前一段時間需要處理一些 excel 資料,主要是匯入/匯出操作,將 Excel 資料轉化為物件再用程式進行處理和分析,沒有找到比較滿意的庫,於是就自己造了一個輪子,遮蔽掉了 xlsx 與 xls 的差別,遮蔽了 Npoi 操作 Excel 的細節,
poi匯出Excel Java POI匯入匯出Excel
Java POI匯入匯出Excel 1、異常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 解決方法:
Vue結合後臺詳解匯入匯出Excel問題
最近Vue專案中用到了匯入匯出功能,在網上搜索了一番之後,決定採用Blob方式,這也是大家推薦的一種的方式,特此做下記錄。 匯出Excel功能 這裡不談別人怎麼實現的,我是從後臺生成了Excel流檔案返回給前端的。 下面具體看一下後臺的程式碼: /** * 批量
Java匯入匯出Excel表格(xls版本、xlsx版本)
自己整合成的一個專門匯入匯出工具類 一、pom檔案導包: <!-- 匯入匯出Excel表格 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <depend
PowerDesigner 資料模型匯入匯出 Excel
目錄 匯出 資料模型匯出成 Excel 匯入 Excel 匯入成資料模型 附:PowerDesigner16.5 安裝包地址 連結:https://pan.baidu.com/s/1-JC2QF727OVW7U1zdiGd3A 提取碼:zam6 匯出
OLEDB匯入匯出Excel
using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System.IO;using System.Linq;using System.Text;using System.Th
java批量匯入匯出(poi)
一、批量匯入 1、匯入時我們接參時使用MultipartFile來接受excel檔案,用poi來讀取檔案內容 InputStream inputStream = MultipartFile.getInputStream(); Wor