天天看點

如何将網格式報表列印成其它樣式

我們經常要列印報表,也遇到列印上的麻煩,比如有時候我們不想嚴格按照報表上面的樣式,根據實際應用可能有别的樣式更适合,這時候怎麼辦呢,其實報表軟體是可以設定,今天我就帶大家來了解一下!

1. 問題描述

對于填報網格式報表,每行前面有個複選框,希望實作點選頁面中設定的列印按鈕希望将選中的複選框中的值按照一定的樣式列印,如分欄、頁面固定顯示幾行等格式。

2. 實作思路

可以定義另外一個有固定格式的模闆,此模闆的資料是根據填報網格式報表中選中的值進行過濾,而在填報網格式報表中則需要在按鈕的點選事件中定義js,js首先要擷取選中行的資料,然後調用FineReport(執行個體中所用報表開發工具為FineReport)内置的列印方法,将選中的值以參數的方式加入到列印方法的URL中傳到被列印的模闆中。

3. 示例

預覽模闆效果如下所示

選中一些資料讓其按照以如下圖所示的樣式進行列印,下面我們來看下具體的實作步驟。

3.1 建立需要列印格式模闆

·        定義資料集

由于此模闆要根據選中的值進行列印,是以要在此模闆中定義參數,在此我們将參數定義成資料集參數。

建立工作簿,增加資料集ds1,SQL語句為:SELECT * FROM 訂單 where 訂單ID in (${ID})。

·        表樣設計

将表樣設計成要列印的效果,在此我們将模闆設定成如下樣式:

将B2單元格的左父格設定成無,并将其餘單元格的左父格設定為B2。

将B3和D3設定形态。

同樣也可以對模闆進行分欄。

·        儲存模闆

儲存模闆,具體的設定可參考模闆:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FormFAQ\PrintCol.cpt

3.2 修改預覽模闆

·        打開模闆

打開模闆:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm7.cpt。

·        修改模闆

此模闆,我們隻要修改按鈕的名稱和按鈕的js即可,是以我們将按鈕名稱修改成“列印”,并将js修改成如下代碼:

var $span = $('.fr-checkbox-checkon');  //擷取選中的複選框
var darray = [];
var $tds = $("td").has($span); //獲得選中複選框的單元格
for (var i = 0, len = $tds.length; i < len; i ++) {    //周遊選中的單元格
var id = $($tds[i]).attr("id");  //給選中的單元格增加id屬性
var idn = id.replace("A","B"); //将複選框所在的A列換成客戶編号所在的B列
var vv=document.getElementById(idn).innerHTML;    //擷取選中單元格所在B列的資料
darray.push(vv);  
}
FR.doURLPDFPrint("${sevletURL}ReportServer?reportlet=/doc/Form/FormFAQ/PrintCol.cpt&ID="+darray);  //調用列印方法,URL為之前做好的模闆路徑      

注:若擷取的vv值為字元串,要将其放入數組中則需要修改成darray.push("'"+vv+"'")。

儲存模闆,具體的設定可參考模闆:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FormFAQ\PrintOtherStyle.cpt。

3.3效果檢視

填報預覽PrintOtherStyle.cpt,選中幾行資料後,點選列印按鈕,就會按照上圖的效果進行列印。