如何將網(wǎng)格式報(bào)表打印成其它樣式
Posted on 2015-08-28 10:23 FineReport——報(bào)表技術(shù)領(lǐng)跑者 閱讀(68) 評論(0) 編輯 收藏我們經(jīng)常要打印報(bào)表,也遇到打印上的麻煩,比如有時(shí)候我們不想嚴(yán)格按照報(bào)表上面的樣式,根據(jù)實(shí)際應(yīng)用可能有別的樣式更適合,這時(shí)候怎么辦呢,其實(shí)報(bào)表軟件是可以設(shè)置,今天我就帶大家來了解一下!
1. 問題描述
對于填報(bào)網(wǎng)格式報(bào)表,每行前面有個(gè)復(fù)選框,希望實(shí)現(xiàn)點(diǎn)擊頁面中設(shè)置的打印按鈕希望將選中的復(fù)選框中的值按照一定的樣式打印,如分欄、頁面固定顯示幾行等格式。
2. 實(shí)現(xiàn)思路
可以定義另外一個(gè)有固定格式的模板,此模板的數(shù)據(jù)是根據(jù)填報(bào)網(wǎng)格式報(bào)表中選中的值進(jìn)行過濾,而在填報(bào)網(wǎng)格式報(bào)表中則需要在按鈕的點(diǎn)擊事件中定義js,js首先要獲取選中行的數(shù)據(jù),然后調(diào)用FineReport(實(shí)例中所用報(bào)表開發(fā)工具為FineReport)內(nèi)置的打印方法,將選中的值以參數(shù)的方式加入到打印方法的URL中傳到被打印的模板中。
3. 示例
預(yù)覽模板效果如下所示
選中一些數(shù)據(jù)讓其按照以如下圖所示的樣式進(jìn)行打印,下面我們來看下具體的實(shí)現(xiàn)步驟。
3.1 新建需要打印格式模板
· 定義數(shù)據(jù)集
由于此模板要根據(jù)選中的值進(jìn)行打印,因此要在此模板中定義參數(shù),在此我們將參數(shù)定義成數(shù)據(jù)集參數(shù)。
新建工作簿,增加數(shù)據(jù)集ds1,SQL語句為:SELECT * FROM 訂單 where 訂單ID in (${ID})。
· 表樣設(shè)計(jì)
將表樣設(shè)計(jì)成要打印的效果,在此我們將模板設(shè)置成如下樣式:
將B2單元格的左父格設(shè)置成無,并將其余單元格的左父格設(shè)置為B2。
將B3和D3設(shè)置形態(tài)。
同樣也可以對模板進(jìn)行分欄。
· 保存模板
保存模板,具體的設(shè)置可參考模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FormFAQ\PrintCol.cpt
3.2 修改預(yù)覽模板
· 打開模板
打開模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm7.cpt。
· 修改模板
此模板,我們只要修改按鈕的名稱和按鈕的js即可,因此我們將按鈕名稱修改成“打印”,并將js修改成如下代碼:
var darray = [];
var $tds = $("td").has($span); //獲得選中復(fù)選框的單元格
for (var i = 0, len = $tds.length; i < len; i ++) { //遍歷選中的單元格
var id = $($tds[i]).attr("id"); //給選中的單元格增加id屬性
var idn = id.replace("A","B"); //將復(fù)選框所在的A列換成客戶編號所在的B列
var vv=document.getElementById(idn).innerHTML; //獲取選中單元格所在B列的數(shù)據(jù)
darray.push(vv);
}
FR.doURLPDFPrint("${sevletURL}ReportServer?reportlet=/doc/Form/FormFAQ/PrintCol.cpt&ID="+darray); //調(diào)用打印方法,URL為之前做好的模板路徑
注:若獲取的vv值為字符串,要將其放入數(shù)組中則需要修改成darray.push("'"+vv+"'")。
· 保存模板
保存模板,具體的設(shè)置可參考模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FormFAQ\PrintOtherStyle.cpt。
3.3效果查看
填報(bào)預(yù)覽PrintOtherStyle.cpt,選中幾行數(shù)據(jù)后,點(diǎn)擊打印按鈕,就會(huì)按照上圖的效果進(jìn)行打印。