在分页后web报表的最后一页补足空行的方法
????????? 幾乎任何形式的文檔和報表都離不開分頁,報表如何分頁在B/S模式的Web報表中也是個常見的問題,特別是當大數(shù)據(jù)量的Web報表需要打印輸出時,不可能將所有數(shù)據(jù)打印到一張紙上,這時必然涉及到報表的分頁。開發(fā)Web報表常常遇到這樣的問題:當數(shù)據(jù)比較多時,在分頁后,常常最后一頁只有幾條數(shù)據(jù),這樣的報表被打印出來以后,看起來不是很美觀,是否能在Web報表最后一頁不足行的時候自動用空白行補充呢?
這個問題用潤乾報表可以非常靈活的解決,下面介紹Web報表分頁打印時補空行的四種不同情形如何在潤乾報表中實現(xiàn)。
情形一,行高固定,無表頭的報表
???????? 這種形式的報表最簡單,下面用一個兩層分組的客戶表來舉例說明。當此報表分頁后,一共分為4頁,最后一頁只有一行,看起來非常不規(guī)整。
???????? 假設報表按A4紙張大小進行分頁,一頁紙可以打印30行。那么我們首先在報表末尾增加一個空白行,然后在最左邊的單元格里加入=to(1,30-ds1.count()%30)表達式,此表達式的意思是說,一頁紙固定行數(shù)是30行,分頁時如果最后一頁數(shù)據(jù)集ds1數(shù)據(jù)不滿30行,則用空白行補充。
???????? 接著選定此單元格,將右側屬性欄中的[可視]屬性去掉,發(fā)布報表即可看到效果。
?????? ? 將此報表發(fā)布后,可以看到最后一頁已經(jīng)被補入了空行,正好填充滿第四頁。
情形二,行高固定,每頁都有表頭的web報表
????????? 當報表加上表頭而且每頁都有時,情況也不復雜,只需要算出除去表頭每頁一共可以容納多少行就可以。在本例中,除去表頭每頁還可以容納29行,這樣我們只需要將單元格A3中的表達式改為=to(1,29-ds1.count()%29),就實現(xiàn)了添加空行。
其實當報表加入加入表尾、頁面、頁腳等等,并且每頁都顯示時,處理方法也是一樣的,只要算出這種情況下每頁可以容納多少行,再取模就可以。
?
情形三,行高固定,行數(shù)不固定,每頁都有表頭的報表
???????? 這種情況下,報表的總行數(shù)不等于數(shù)據(jù)集中記錄的總個數(shù),比如本例中在每個”地區(qū)”分組后都加入一個”公司數(shù)”匯總信息行的情況。這時報表按”地區(qū)”一共分為幾組由具體數(shù)據(jù)決定,在設計報表時并不知道,但在潤乾報表中非常容易得到這個分組個數(shù),只要算出A2擴展出幾個單元格就行。我們把A4的表達式改成:=to(1,29-(ds1.count()+count(A2{}))%29)。
其實,本例只是行數(shù)不固定的一種簡單情況,還有很多其它行數(shù)不固定的情況,在潤乾報表中都可以用表達式算出這不固定的總行數(shù),從而解決問題。
?
情形四,行高固定,行數(shù)不固定,只有第一頁有表頭的報表
很多Web報表只需要在第一頁打印報表表頭,針對這種情況,潤乾報表可以通過報表屬性設置很方便地設置表頭打印的方式。
這時情況其實和變化一類似,只是第一頁多出來了報表頭這一行,我們只需要在變化三的基礎上把取模總數(shù)加1、再把每頁按29行取模改成按30行取模,修改表達式為:=to(1,30-(ds1.count()+count(A2{})+1)%30)。
?????????????到這里,利用潤乾報表實現(xiàn)分頁打印Web報表補足空行的四種情形都介紹完了,細心的讀者可能會發(fā)現(xiàn),這四種變化都是基于”行高固定”這個假設,那么當行高不固定的時候如何處理呢?其實最簡單答案還是在潤乾報表中用取模的方法,只是取模的時候要加入具體行高和打印紙張的高度進行計算就行了。這時候又有讀者會問,如果Web報表中的紙張大小都不固定怎么辦呢?呵呵,這個也難不倒?jié)櫱瑘蟊怼i_發(fā)人員可以用潤乾報表中的參數(shù)和宏的功能,動態(tài)設定紙張大小,以適應不同的打印情況。
總結
以上是生活随笔為你收集整理的在分页后web报表的最后一页补足空行的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动编号转化为文本_将您的自动回复器转化
- 下一篇: 谈谈.NET MVC QMVC高级开发