Java軟件報(bào)表軟件技術(shù)博客

          java報(bào)表軟件技術(shù)匯總 java報(bào)表軟件制作 報(bào)表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理

          1. 問(wèn)題描述

          完成報(bào)表取數(shù)后,設(shè)計(jì)器會(huì)對(duì)數(shù)據(jù)庫(kù)返回的數(shù)據(jù)進(jìn)行擴(kuò)展、分組、列表、匯總等運(yùn)算,好的模板制作習(xí)慣往往可以優(yōu)化報(bào)表的計(jì)算時(shí)間。

          以下示例報(bào)表開發(fā)工具:FineReport。

          2. 解決方案

          2.1 空白單元格應(yīng)用

          報(bào)表中,只要一個(gè)單元格里有設(shè)置就會(huì)占用一份內(nèi)存,而空白的單元格幾乎是不占任何內(nèi)存的。報(bào)表中由于布局的需要,不可避免地會(huì)出現(xiàn)一些只起到占位作用而無(wú)需其他的設(shè)置的單元格;盡量將這些單元格設(shè)成空白單元格,這樣能夠有效的減少內(nèi)存的占用,加快報(bào)表的運(yùn)算速度。

          2.2 慎用隱藏行列

          報(bào)表中為了進(jìn)行一些復(fù)雜的運(yùn)算,往往需用到隱藏行列來(lái)處理中間的運(yùn)算,而這些隱藏行列中被用到的單元格,往往只有一兩個(gè)格子,此時(shí)被隱藏行列中沒(méi)被用到的單元格里有設(shè)置的話會(huì)額外浪費(fèi)內(nèi)存,因此建議把沒(méi)用的單元格設(shè)為空白單元格,減少內(nèi)存的占用,加快報(bào)表的運(yùn)算速度。

          2.3 慎用合并單元格

          報(bào)表中,常常會(huì)用到合并單元格,合并單元格的所有屬性都是保存在左上角的格子中的,而合并區(qū)域中的其他被合并的單元格,并不保存任何屬性也不占用內(nèi)存。

          雖然合并單元格的應(yīng)用能夠減少內(nèi)存,不過(guò)因合并單元格的運(yùn)算涉及到多個(gè)單元間的主被動(dòng)關(guān)系,所以運(yùn)算比較復(fù)雜,反而會(huì)降低運(yùn)算速度。因此,我們建議慎用合并單元格,盡量將沒(méi)用的單元格設(shè)成空白單元格。

          2.4 相同效果的條件屬性

          同一行(列)中的單元格需要設(shè)置相同效果的條件屬性時(shí),只需在該行(列)中的某個(gè)單元格設(shè)置一下條件屬性便可,這樣能夠加快報(bào)表的運(yùn)算速度。如下圖,需要隱藏某行時(shí)只需要在一個(gè)單元格中設(shè)置條件屬性即可,不要每個(gè)單元格都設(shè)置。

          2.5 相同效果的數(shù)據(jù)列基本屬性設(shè)置

          報(bào)表制作過(guò)程中,我們將數(shù)據(jù)集中的字段拖入單元格時(shí),數(shù)據(jù)列>基本>數(shù)據(jù)設(shè)置,(分組、列表、匯總)中計(jì)算最快的是列表。如制作明細(xì)表時(shí)有兩種設(shè)置方法,結(jié)果是一樣的。 設(shè)置方式一:地區(qū)列數(shù)據(jù)設(shè)置為列表,后面其他跟隨其擴(kuò)展的數(shù)據(jù)列的數(shù)據(jù)設(shè)置還是采用默認(rèn)的設(shè)置(即分組普通)。

          設(shè)置方式二:地區(qū)列數(shù)據(jù)設(shè)置為列表,后面其他跟隨其擴(kuò)展的數(shù)據(jù)列的數(shù)據(jù)設(shè)置也修改為列表。

          上面兩種設(shè)計(jì)方式的數(shù)據(jù)展示結(jié)果是一樣的,不過(guò)報(bào)表的計(jì)算速度卻不一樣;第二種方式的報(bào)表計(jì)算速度明顯會(huì)比第一種快。

          這是因?yàn)閿?shù)據(jù)列設(shè)為分組時(shí),報(bào)表會(huì)將取出的數(shù)據(jù)進(jìn)行一次分組聚集的計(jì)算,而不管數(shù)據(jù)有沒(méi)有重復(fù)。因此,對(duì)于可實(shí)現(xiàn)相同效果的應(yīng)優(yōu)先設(shè)置其數(shù)據(jù)列屬性為列表。

          2.6 父格設(shè)置

          FR中設(shè)計(jì)報(bào)表的最重要的思想,就是數(shù)據(jù)列的擴(kuò)展,而跟隨哪一個(gè)單元格擴(kuò)展是必須要注意的問(wèn)題。所以父格的設(shè)置是很重要的,父格設(shè)置不恰當(dāng)會(huì)影響報(bào)表的計(jì)算速度,甚至導(dǎo)致結(jié)果錯(cuò)誤。另外,父子格層次樹高度,對(duì)報(bào)表性能也有影響,所以盡量減少父子格層次樹高度。如對(duì)下圖模板:

          注:將所有單元格的數(shù)據(jù)顯示方式設(shè)置為列表顯示。

          設(shè)置方式一:銷量父格為產(chǎn)品名稱,產(chǎn)品名稱父格為產(chǎn)品類型,產(chǎn)品類型父格為銷售員、銷售員父格為地區(qū),父子格層次樹為4層。

          設(shè)置方式二:銷量、產(chǎn)品名稱、產(chǎn)品類型、銷售員的父格都為地區(qū),父子格層次為1層。

          上面兩種設(shè)計(jì)方式的數(shù)據(jù)展示結(jié)果是一樣的,不過(guò)報(bào)表的計(jì)算速度卻不一樣;第二種方式的報(bào)表計(jì)算速度明顯會(huì)比第一種快。

          2.7 取消自動(dòng)調(diào)整行高或列寬

          若已設(shè)置自動(dòng)調(diào)整列寬的話,那么在報(bào)表展示前會(huì)先去計(jì)算單元格中數(shù)據(jù)的寬度或高度,這樣就增加了報(bào)表的運(yùn)算時(shí)間,所以盡量取消自動(dòng)調(diào)整行高或列寬。

          2.8 優(yōu)化過(guò)濾條件

          查看模板中是否重復(fù)設(shè)置了過(guò)濾條件,刪除多余的過(guò)濾條件,即若數(shù)據(jù)列來(lái)自相同的數(shù)據(jù)集,只需在最左父格設(shè)置過(guò)濾條件并勾選將父格子作為過(guò)濾條件(默認(rèn)是勾選的)即可。




          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 定边县| 磐安县| 陆川县| 偏关县| 东丽区| 旺苍县| 北宁市| 松滋市| 霍林郭勒市| 华坪县| 瓦房店市| 平昌县| 惠水县| 类乌齐县| 巴彦淖尔市| 赤峰市| 乐清市| 松原市| 民丰县| 和静县| 剑川县| 盐城市| 北川| 斗六市| 儋州市| 鹤山市| 屏南县| 察隅县| 庆安县| 始兴县| 呼和浩特市| 钟山县| 上饶市| 勐海县| 搜索| 隆林| 隆尧县| 梅州市| 双桥区| 周口市| 邓州市|