我們平時打印報表中可能遇上很多問題,比如說想通過xml數(shù)據(jù)源制作模板,而非單獨(dú)通過數(shù)據(jù)庫sql語句導(dǎo)出數(shù)據(jù),又比如說想實(shí)現(xiàn)靜默打印、預(yù)覽打印,及批量打印,或者想選擇不同的頁面,系統(tǒng)可根據(jù)自己的選擇,在點(diǎn)擊打印后選擇不同模板進(jìn)行打印等等這些問題。也許一時半會得不到解決,今天我就來分享一下一些打印報表的問題解決方案。
報表開發(fā)需求描述
系統(tǒng)需求
1、已開發(fā)好的報表模板:供用戶打印及瀏覽;
2、未開發(fā)報表模板:可以讓用戶自主開發(fā)報表模板,并上傳保存到服務(wù)器,供后續(xù)打印及瀏覽。
具體需求列表
1、用戶可以通過xml數(shù)據(jù)源制作模板,而非單獨(dú)通過數(shù)據(jù)庫sql語句導(dǎo)出數(shù)據(jù);
2、打印系統(tǒng)和報表系統(tǒng)實(shí)現(xiàn)單點(diǎn)登錄,以便用戶在系統(tǒng)切換過程中,無需再次登錄便可直接打印;
3、各倉庫報表模板存放于不同目錄下,方便后續(xù)管理;
4、能夠?qū)崿F(xiàn)靜默打印、預(yù)覽打印,及批量打印等;
5、用戶選擇不同的頁面,系統(tǒng)可根據(jù)用戶的選擇,在點(diǎn)擊打印后選擇不同模板進(jìn)行打印;
6、模板權(quán)限控制,用戶只能預(yù)覽及打印權(quán)限內(nèi)的模板,對于其他模板,則沒有權(quán)限進(jìn)行預(yù)覽及打印操作。
工具
報表開發(fā)工具:FineReport
FineReport是一款集數(shù)據(jù)展示(報表)和數(shù)據(jù)錄入(表單)功能于一身,用于快速構(gòu)建企業(yè)信息系統(tǒng)的Java報表開發(fā)工具。
報表開發(fā)方案概述
報表開發(fā)流程設(shè)計
1、業(yè)務(wù)人員利用空數(shù)據(jù)的xml數(shù)據(jù)源制作報表;
2、將報表上傳至服務(wù)器;
3、用戶選擇打印模塊箭頭;
4、通過動態(tài)生成xml,打印出有數(shù)據(jù)的模板。
業(yè)務(wù)人員制作報表
1、通過加載空數(shù)據(jù)的xml數(shù)據(jù)源,獲取數(shù)據(jù)字段;
2、拖拽數(shù)據(jù),制作模板;
3、將制作好的模板,通過開發(fā)的上傳頁面,將模板分類保存到不同目錄下(finereport無法直接完成、需自主編寫上傳)。
業(yè)務(wù)人員打印
1、業(yè)務(wù)人員在已開發(fā)好的頁面,選擇要打印的模塊;
2、選擇要打印的報表;
3、后臺生成有數(shù)據(jù)的xml,推送給報表模板(有接受參數(shù)接口);
4、直接打印(靜默打印)、或打印預(yù)覽(有打印接口)。
xml格式要求
生成的xml,須為二維表結(jié)構(gòu)數(shù)據(jù)

Xml數(shù)據(jù)源轉(zhuǎn)換
用戶在制作報表時,用的是空數(shù)據(jù)的xml,但打印時,需實(shí)時連接有數(shù)據(jù)的xml。通過xml文件名,用參數(shù)形式實(shí)現(xiàn)動態(tài)轉(zhuǎn)換。

批量打印接口調(diào)用
直接通過Get或Post方式批量調(diào)用模板打印功能即可,如下function
