<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Heis的Blog

    保持簡單,保持愚蠢
    隨筆 - 29, 文章 - 1, 評論 - 122, 引用 - 0
    數(shù)據(jù)加載中……

    JasperReport那些事兒(四)——制作標簽式報表

        最近在想《JasperReport那些事兒》系列的寫作方向的問題,是要先寫Jasper的原理和基礎(chǔ)方面,還是寫怎么制作報表實例。如果你想我寫一些你感興趣的部分,可以在文章后面加評論告訴我。這周先寫一篇制作報表實例的文章吧。
        最近在blogjava看到一篇總結(jié)報表圖例的文章http://m.tkk7.com/report9d/archive/2009/03/04/257848.html。總結(jié)的相當(dāng)不錯,如果你不知道什么是標簽式報表,可以看看。

    1.先上效果圖


    2.數(shù)據(jù)源還是沿用NameList XML數(shù)據(jù)源,關(guān)于怎么配置數(shù)據(jù)源可以看這里
    <?xml version="1.0" encoding="utf-8" ?>
    <NameList>
        
    <Person>
            
    <Name>強尼</Name>
            
    <Gender></Gender>
            
    <Age>56</Age>
        
    </Person>
        
    <Person>
            
    <Name>阿美</Name>
            
    <Gender></Gender>
            
    <Age>23</Age>
        
    </Person>
        
    <Person>
            
    <Name>李麗</Name>
            
    <Gender></Gender>
            
    <Age>58</Age>
        
    </Person>
        
    <Person>
            
    <Name>杰森</Name>
            
    <Gender></Gender>
            
    <Age>32</Age>
        
    </Person>
        
    <Person>
            
    <Name>劉三</Name>
            
    <Gender></Gender>
            
    <Age>21</Age>
        
    </Person>
    </NameList>  

    3.制作報表的思路
      在制作標簽報表的時候,我們先來理清一下思路。可以發(fā)現(xiàn),其實標簽式報表的每個小標簽內(nèi)的內(nèi)容類型都是一樣的,這樣可以認為報表是由多個標簽組成的。這樣就可以分離出主體報表和子報表的概念,這與Jasperreport里的subreport(子報表)概念是一樣的。這樣就可以大概抽象出一個標簽式報表的模型了,在主體報表上使用兩個subreport元素指向同一個標簽報表。

      那為什么要使用兩個subreport元素?我們先來看我們期待輸出的標簽?zāi)P偷捻樞颉?br />
      但是在Jasperreport里,報表的渲染是從上到下的。所以我們期待的順序是先渲染1號標簽,然后渲染2號標簽,這是從左到右的渲染,在Jasperreport里面是做不到的。但是我們可以采用同時渲染1號和2號標簽,這就需要兩個subreport元素。
    4.具體步驟(關(guān)于子報表的制作,可以參考我的第一篇文章)
    a)建立一個主模板,加入兩個subreport。

    b)建立一個子模板(標簽?zāi)0澹?/span>


    c)配置subreport的XPATH。
    左邊的subreport的Datasource配置

    右邊的subreport的Datasource配置


    報表模板下載:http://m.tkk7.com/Files/heis/%E5%9B%9B-%E5%88%B6%E4%BD%9C%E6%A0%87%E7%AD%BE%E5%BC%8F%E6%8A%A5%E8%A1%A8/Chapter4.zip



    程序員的一生其實可短暫了,這電腦一開一關(guān),一天過去了,嚎;電腦一開不關(guān),那就成服務(wù)器了,嚎……

    posted on 2009-03-08 15:33 Heis 閱讀(4196) 評論(12)  編輯  收藏 所屬分類: JasperReport那些事兒

    評論

    # re: JasperReport那些事兒(四)——制作標簽式報表[未登錄]  回復(fù)  更多評論   

    看了大大的四篇,發(fā)現(xiàn)自己的問題有了解決方法,大大是把查詢結(jié)果弄成XML數(shù)據(jù)源,然后再把它們讀取到報表,這就解決了直接對數(shù)據(jù)庫綁定數(shù)據(jù)源造成無法對條件搜索進行報表了。這樣又要涉及XML的讀寫問題,如果我的數(shù)據(jù)有好幾萬條一次性寫入XML不知道會不會效率有問題,我第一次接觸報表,請多多指教,謝謝
    2009-03-09 09:16 | 游上岸的魚

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    @游上岸的魚
    使用XML作為數(shù)據(jù)源比直接讀取數(shù)據(jù)庫更有優(yōu)勢的地方在于:
    1.數(shù)據(jù)可以在程序里處理;
    2.數(shù)據(jù)獨立性和可讀性好

    但是劣勢也是很明顯的,因為要從數(shù)據(jù)庫讀取數(shù)據(jù)到對象,對象再轉(zhuǎn)換為XML,這個過程消耗的資源要更多,效率也會受到影響。具體的效率我也沒測試過,但是我在項目里生成的XML在一萬行左右時,效率是可以接受的。
    但是對于效率要求比較高的報表,但是數(shù)據(jù)不需要做中間處理的報表,我并不推薦XML作為數(shù)據(jù)源這種方式。
    2009-03-09 10:20 | Heis

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    這樣的報表做起來很麻煩,而且多個子報表效率無疑會很底,樓主有沒有想過jasperReport的API支持多結(jié)果集的報表,也就是針對報表上不同的塊解釋不同的SQL填充?而且樓主所說的標簽式報表完全可以通過簡單的一個jrxml文件通過分欄操作完成
    2009-03-09 17:08 | 凌晨風(fēng)

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    @凌晨風(fēng)
    首先,針對你說的“報表做起來很麻煩”。我前面的文章有說過,以XML作為數(shù)據(jù)源是針對不同的需求的,請考慮下面的幾種情況:如果你的報表數(shù)據(jù)要經(jīng)過一系列的精確計算,然后在報表上展示計算結(jié)果;如果你的報表數(shù)據(jù)并不是全部都來自于數(shù)據(jù)庫,而是某些來自程序或其他配置文件;SQL能不能解決問題?

    其次,我不能認同“多個子報表效率無疑會很底”這句話。標簽式報表主體報表的subreport元素都是指向相同的子報表模板。這相當(dāng)于java中一個類調(diào)用同一個類的多個實例,這樣并不會有效率問題。使用“無疑”這個詞并不是程序員應(yīng)有的素質(zhì),至少你應(yīng)該先去運行一下這個報表。

    我猜想你說的“多結(jié)果集”是指subdatasets,這個是只適用于連接(Connection)類型的數(shù)據(jù)集(像數(shù)據(jù)庫,Hibernate之類),并不適用于數(shù)據(jù)源(Data Source)類型的數(shù)據(jù)集(像XML,CSV之類)。

    對于你的“分欄”操作,我并不是很理解,請賜教。
    2009-03-09 20:00 | Heis

    # re: JasperReport那些事兒(四)——制作標簽式報表[未登錄]  回復(fù)  更多評論   

    感覺這樣介紹沒實際意義 因為JasperReport并不適合中國的報表,很多都做不出來,建議你看看潤乾報表,不要在這里給大家推薦一個不適合中國的報表!
    2009-03-10 08:52 | john

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    @Heis
    博主說的很有道理,需求不同,中國式復(fù)雜的報表的確做起來很麻煩.
    我也是發(fā)表一下個人意見而已.大家共同學(xué)習(xí)啊!
    我接觸過jasper的api,底層針對子報表采用io加載,編譯jasper文件,之后.java文件,博主可以跟蹤調(diào)試一下多子報表的例子看看,程序運行時會在你的硬盤上寫文件之后編譯加載到內(nèi)存后刪除掉,放開底級別的日志就可以看出來.
    我們的系統(tǒng)是跑在局域網(wǎng)的,運行起來都不是很理想.至于報表上展示的數(shù)據(jù)和圖表等等需要特殊經(jīng)過計算的數(shù)據(jù)我是采用scriplet處理,而底層只需要一個簡單的connection就可以(主要是考慮到我們的報表系統(tǒng)是給用戶使用的,而用戶只會一些簡單的sql,配上我們封裝的scriplet就可以達到想要的效果).
    關(guān)于那個"分欄",我是看了這個效果圖才有此說法,至于是不是和你的需求一致那大家就應(yīng)該多交流了:先說說我的想法:分成兩列橫著打印就可以出現(xiàn)你要的這種效果圖,不知道博主是不是這個意思?學(xué)習(xí)學(xué)習(xí)!
    2009-03-10 09:04 | 凌晨風(fēng)

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    @john
    JasperReport不是不適合中國報表,只是它不是為中國報表而設(shè)計!jasperReport功能很強大,只要你有想象力完全可以定制所需要的報表,關(guān)鍵是它開源,是一個純java報表,如果你是跨系統(tǒng)那么它是首選,前提是你有足夠的時間和耐心哦
    2009-03-10 09:11 | 凌晨風(fēng)

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    @john
    那你的意思是適合中國的報表才有意義?那什么是中國式的報表呢?
    2009-03-10 19:18 | Heis

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    @凌晨風(fēng)
    “分成兩列橫著打印”是不是指像我現(xiàn)在的報表逆時針轉(zhuǎn)90度。如果是,那在Jasperreport里是做不到的。文章中也有提及,Jasperreport是只能一個區(qū)域(band)一個區(qū)域地去渲染,因為區(qū)域的排列是由上到下,所以渲染的順序也是從上到下的,沒辦法從左到右渲染。
    2009-03-10 19:26 | Heis

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    不是指報表逆時針轉(zhuǎn)90度,而是數(shù)據(jù)橫向排列
    2009-03-11 08:52 | 凌晨風(fēng)

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    JasperReport似乎支持橫向label
    http://jasperforge.org/website/jasperreportswebsite/trunk/samples.html?group_id=252
    2009-08-02 15:23 | caper

    # re: JasperReport那些事兒(四)——制作標簽式報表  回復(fù)  更多評論   

    blog的布局和字體怎么這么難看?
    2009-11-10 10:45 | yzc
    主站蜘蛛池模板: 国产精品亚洲一区二区三区久久| 亚洲国产乱码最新视频| 极品美女一级毛片免费| 午夜两性色视频免费网站| 亚洲一区二区三区免费视频| 免费在线观看h片| 亚洲国产av高清无码| 无码国产精品一区二区免费式影视| 亚洲欧洲日韩不卡| 18禁止看的免费污网站| 亚洲精品视频久久| 美女被cao免费看在线看网站| 亚洲制服在线观看| 毛片免费在线视频| 精品免费AV一区二区三区| 免费A级毛片在线播放不收费| 青青草国产免费国产是公开| 国产av无码专区亚洲国产精品| 成年女人A毛片免费视频| 亚洲国产精品久久久久网站| 亚洲免费闲人蜜桃| 亚洲人成色777777精品| 免费一级毛片在线播放| 免费国产污网站在线观看| 亚洲国产美女视频| 精品国产免费观看久久久| 一级黄色片免费观看| 亚洲AV成人片色在线观看高潮| 日本黄网站动漫视频免费| 精品国产亚洲一区二区三区在线观看 | 成年女人喷潮毛片免费播放| 国产天堂亚洲精品| 亚洲国产精品乱码一区二区| 亚州免费一级毛片| 美女黄频免费网站| 亚洲av日韩av无码黑人| 天天摸天天碰成人免费视频| 国产免费一区二区三区免费视频| 亚洲视频在线不卡| 亚洲av无码不卡私人影院| 97在线视频免费播放|