<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那些事兒(四)——制作標(biāo)簽式報(bào)表

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

    1.先上效果圖


    2.數(shù)據(jù)源還是沿用NameList XML數(shù)據(jù)源,關(guān)于怎么配置數(shù)據(jù)源可以看這里
    <?xml version="1.0" encoding="utf-8" ?>
    <NameList>
        
    <Person>
            
    <Name>強(qiáng)尼</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.制作報(bào)表的思路
      在制作標(biāo)簽報(bào)表的時(shí)候,我們先來理清一下思路。可以發(fā)現(xiàn),其實(shí)標(biāo)簽式報(bào)表的每個(gè)小標(biāo)簽內(nèi)的內(nèi)容類型都是一樣的,這樣可以認(rèn)為報(bào)表是由多個(gè)標(biāo)簽組成的。這樣就可以分離出主體報(bào)表和子報(bào)表的概念,這與Jasperreport里的subreport(子報(bào)表)概念是一樣的。這樣就可以大概抽象出一個(gè)標(biāo)簽式報(bào)表的模型了,在主體報(bào)表上使用兩個(gè)subreport元素指向同一個(gè)標(biāo)簽報(bào)表。

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

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


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

    右邊的subreport的Datasource配置


    報(bào)表模板下載:http://www.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



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

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

    評論

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

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

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

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

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

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

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

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

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

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

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

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

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

    感覺這樣介紹沒實(shí)際意義 因?yàn)镴asperReport并不適合中國的報(bào)表,很多都做不出來,建議你看看潤乾報(bào)表,不要在這里給大家推薦一個(gè)不適合中國的報(bào)表!
    2009-03-10 08:52 | john

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

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

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

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

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

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

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

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

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

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

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

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

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

    blog的布局和字體怎么這么難看?
    2009-11-10 10:45 | yzc
    主站蜘蛛池模板: 亚洲偷自拍拍综合网| 午夜高清免费在线观看| 亚洲男同帅GAY片在线观看| 免费国产va在线观看| 亚洲Av无码国产情品久久| 国产精品亚洲专一区二区三区| 国内免费高清在线观看| 亚洲欧美国产国产一区二区三区| 成人网站免费观看| 色噜噜的亚洲男人的天堂| 亚洲精品无码成人片在线观看 | 国产亚洲精品国看不卡| 久久毛片免费看一区二区三区| 久久亚洲国产精品123区| 青青操视频在线免费观看| 亚洲自偷自拍另类12p| 四虎永久在线观看免费网站网址| 亚洲精品美女网站| 免费国产成人高清在线观看麻豆 | AV在线播放日韩亚洲欧| 国产在线观a免费观看| 亚洲精品在线视频观看| 在线观看免费a∨网站| 国产免费人成视频尤勿视频| 亚洲国产日韩一区高清在线| 日本妇人成熟免费中文字幕 | 亚洲视频在线观看| 好爽…又高潮了免费毛片| 免费国产a理论片| 91精品国产亚洲爽啪在线影院| 男人的好看免费观看在线视频| 国产亚洲视频在线观看| 久久久影院亚洲精品| 猫咪社区免费资源在线观看| 污污污视频在线免费观看| 亚洲精品资源在线| gogo全球高清大胆亚洲| 日韩精品无码专区免费播放| 日韩欧美亚洲国产精品字幕久久久| 亚洲综合色婷婷七月丁香| 免费可以在线看A∨网站|