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

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

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

    report9d

    2008年8月8日 #

    特大喜訊: 簡表(JOR),國內唯一開源的java報表工具隆重啟航!

    簡表(JOR),是一款開源的報表工具,完全java實現,核心代碼來自于國內一線報表工具品牌杰表.2008 。

    提起開源的報表工具,不能不說說jaspereport,jasperreport作為著名的開源報表工具,在java程序員中一直享有盛名。但由于其設計主要是針對西式的簡單報表,設計起復雜的中式報表來,有點力不從心,所以,在國內的項目中能成功應用的例子并不多。JOR,作為能做復雜報表的開源報表工具,可以彌補jasperreport的不足。

    下載地址:

    http://www.jatools.com/jor

    posted @ 2009-10-15 16:09 report9d 閱讀(343) | 評論 (0)編輯 收藏

    原創olap引擎,純java實現的

    java實現的olap服務器,完全自主產權,純java實現. cube架構,性能優,占用空間小.


     

    分析模型設計器

     


    posted @ 2009-09-25 18:47 report9d 閱讀(372) | 評論 (0)編輯 收藏

    換個角度來曬曬杰表.2008

    閑話少說,曬幾個杰表.2008的ppt截圖,希望有助于大家對報表工具的選擇.













     


    posted @ 2009-09-02 13:02 report9d 閱讀(952) | 評論 (0)編輯 收藏

    jni 學習筆記一(原創)

    jni 類型

    簡單類型 primitive type

    jni有8大基本類型, jboolean,jbyte,jchar,jshort,jint,jfloat,jlong,,jdouble
    8位,16位,32位,64位,各兩個(在win32平臺中,其他平臺不一定)

    java類型與c++數據類型的映射關系是如下:
    jboolean <--> unsigned char
    jchar   <--> unsigned short
    jshort  <--> short
    jfloat  <-->  float
    jdouble <--> double

    這是在 jni.h里定義的,為啥缺了jbyte,jint,jlong的映射呢?
    答案是:sun在實現java虛擬機時,考慮到虛擬機可能運行在不同的操作系統和不同的硬件平臺上,比如,硬件平臺有8位,16位,32位,64位的區別,為了更好地與硬件平臺匹配,發揮最好的性能,將一些類型抽取出來,允許在不同的平臺上有不同的表示(位數),我們姑且稱之為硬件相關類型,jbyte,jint,jlong就屬于硬件相關類型。

    舉列來說,如果你在32位機上,jint表示的是32bit的,而在64位機上,一般是64位即8個字節表示,也就是說,jbyte,jint,jlong在sun的虛擬機上,位數是不定的。

    那位數不一定,怎么編譯?   sun的方法是增加一個機器相關的jni_md.h文件,這里的md是machine dependent(機器相關)的意思。在win32平臺中,這三個類型的定義如下:

    typedef long jint;
    typedef __int64 jlong;
    typedef signed char jbyte;

    由此可見,在win32平臺中,jint是32位的,jlong是64位,jbyte是8位的.

    指針類型  reference type
    reference 準確的譯法,應該是引用,但引用實際上就是指針的一種偽裝,只不過更接近人的思維罷了。如果說,"爸爸的爸爸"是一種指針概念,那"爺爺"就是一種引用概念。

    jni把類型分為兩大類,一個是簡單類型,一個是引用類型,下面是引用類型



    從上圖似乎可以看出,所有引用類型,都從jobject 繼承,jarray又被幾個簡單類型的數組繼承.
    但實際上這個對象層次,是一種假象,跟我們c++與java中看到的對象層次是有區別的,jobject與LPSTR(字符串指針),本質上沒有區別:
    1.  jobject, jclass,jstring,...等,所有對象,是指針,不是對象本身,而指針是不存在繼承關系的,“小狗”的指針,從“動物”的指針繼承,這種說法不成立。
    2. jobject,jclass,jstring 是一種指針,不存在任何操作方法,好比你不能 LPCSTR->strlen(),在jni中,也沒有提供任何  jobject->something() 這種調用。
    3. 對這些對象的操作必須依賴于 env對象的操作方法.

    看一下,jni.h中對 這些引用對象的定義

    class _jobject {};
    class _jclass : public _jobject {};
    class _jstring : public _jobject {};
    ...
    typedef _jobject *jobject;     //_jobject才是類定義,jobject 是否_jobject的指針
    typedef _jclass *jclass;
    typedef _jstring *jstring;
    ...

    在這些下劃線對象中,有什么成員變量,成員函數呢? 答案是你什么也不能得到,比如,你想知道,_jstring對象的字符串長度,你不能 _jstring.length(),得到,而必須env->GetStringLength(jstring) 來得到.

    只給你一個對象的指針,不告訴你里面有什么,這樣做的好處是實現與接口分離。

    jvalue 這個類型,是一個union ,感覺很想com里的variant對象,不過沒有指明類型的field
     typedef union jvalue {
        jboolean z;
        jbyte    b;
        jchar    c;
        jshort   s;
        jint     i;
        jlong    j;
        jfloat   f;
        jdouble  d;
        jobject  l;
    } jvalue;
    我現在還不知道,這個數據類型,什么時候用.

    jfieldID是一個java類成員變量的id,這個id在c++中,實際是一個指向結構的一個指針, jmethodID  是成員方法的id,  不管是成員變量還是方法的id,在java類被加載進虛擬機后,是保持不變的。所以從考慮性能計,可以使用靜態緩存的方法,先取出來,后面會講到

    字符串類型
    這里說的字符串類型,是jni中char * 的格式,不是指 jstring/_jstring,jni也使用 char * 字符串指針,
    好下所示:
        jmethodID GetMethodID (JNIEnv *env, jclass clazz, const char *name, const char *sig);

    但需要注意的是,這里的name,必須是UTF-8的編碼,utf-8對于ascii字符,只占一個字節,最多不超過3個字節

    posted @ 2009-06-22 10:12 report9d 閱讀(2277) | 評論 (1)編輯 收藏

    java報表圖例大全

    通過圖片介紹java報表開發過程中,經常遇到的一些報表類型,統計圖,及可視化的設計等.下面以 杰表.2008 為例介紹之.

     

    一、支持報表類型

    主從報表

    套打報表

    標簽報表

    分欄報表

    計算比去年增長數

    計算比去年同期增長數

    補足空行的表格報表

    多表合并.不同的數據集,做成一個相連的報表.

    公式分組報表.按字段值,進行分類,分級

    排行榜(Top N)報表

    按匯總值大小排序的分組

    多級分組

    計算占比

    顯示排名

    交叉表折頁處理



    層次不等的交叉表

    行列并行分組的交叉表

    多數據集的交叉表

    靜態表格中的公式計算

     

    二、javabean數據源

    使用java數組

    假設項目組其他成員已經編寫了一個Student類,如下圖(a),該類定義四個方法,分別獲取其姓名,年齡,性別,分數。由腳本構造一個包含三個Student對象的數組,如圖(b),要求你做成下圖(c)所示報表。

    嵌套的java對象數據源

    假設你有下圖(a)所示的兩個類Student和Person,你可以使用Student的getMembers()方法,取得該學生的家庭成員列表,每個家庭成員用一個Person對象表示,該對象包含與該學生的關系、姓名、性別等信息。

    ResultSet數據源

    指定sql查詢一個報表


    三、統計圖與條碼

    插入統計圖對象

    設置統計圖背景及立體效果

    設置統計圖輸出格式為Flash

    從統計圖鉆取另一個明細報表

    你可以在統計圖的某一個數據區放置一個超鏈接,使用戶雙擊該區時,跳轉到另一個子報表或網頁,如,有一個柱形圖,顯示各產品的庫存量,點擊某個產品的柱面,就可以打開該產品相關的銷售記錄。

    餅圖

    以時間為橫軸的統計圖

    混合類型統計圖

    雙軸統計圖

    創建甘特圖

    特殊統計圖








    創建條形碼對象

    日常生活中條形碼隨處可見,條形碼用幾何圖形表示數據,并可以被專門設備識別。杰表可支持的13種條形碼,分別是codabar、code39、code128、2of5、postnet、ean-128、ean-13、ean-8、upc-a、upc-e、royal-mail-cbc、pdf417、datamatrix,其中最后兩種是二維條形碼。

    一維碼   二維碼  

    設置圖片背景

    顯示數據庫字段上的圖片


    三、特殊的報表效果

    凍結窗口效果

    點擊表頭排序

    使用超鏈接子報表

    當你瀏覽報表時,可能需要了解更詳細的信息,比如,我們在瀏覽一個訂單列表時,希望了解該訂單中各貨物的銷售數量。這時,你可以在訂單列表中,加一個超鏈接,使用戶在點擊該鏈接后,可以跳轉到顯示該訂單明細的一個報表。
    你可以在主表中,點擊訂單ID,即可瀏覽該訂單出售的所有貨物明細,如下圖所示:

    熱點提示

    復雜匯總

    顏色警告

    斑馬條

    創建頁小計、頁累計報表

     

    四、可視化設計器

    設計參數表單

    杰表.2008配備了一個可視化參數表單設計器,使用這個設計器,你可以不離開報表設計器環境,輕松制作查詢表單。表單設計器有豐富的web控件,檢驗,事件偵聽,css樣式機制,你也可以使用javascript腳本擴展表單功能,同時,也實現了常用的多個下拉框聯動功能。

    可視化的報表設計器

    報表預覽面板

     

    posted @ 2009-03-04 17:58 report9d 閱讀(5867) | 評論 (5)編輯 收藏

    Java報表工具打印方案集錦

    本文試圖對市面上流行的純java實現的web報表工具,jasperreport 、 stylereport 、杰表、潤乾報表、快逸、finererport為例,分析各報表工具采用的web打印技術的異同、優劣、及對用戶需求的適應性,供大家參考。

    打印是報表工具的基本功能之一,有些報表工具就是從一個專門的打印程序中發展而來,如用友華表。因為想當然地簡單,所以,在報表工具選型時用戶常常忽略這個問題,特別是有些報表工具廠商,明知自己的打印方案在滿足某些需求時,存在缺陷,但沒有盡明確告知義務,而故意事先做好花里胡哨的有關打印方面的文檔,欺騙客戶。我曾不至一次地聽說,有些開發商選用的報表工具,其打印功能不能滿足需求,不得不另外找打印工具的事情,實在是吃盡苦頭。

    報表打印在c/s時代,確實非常簡單,vb,vc,Delphi,pb,都有很好用的打印api,有的甚至用報表控件方式,搞定打印更是分分秒的事情,但今天是b/s的天下,報表都是在網頁瀏覽器中顯示,但當今的瀏覽器打印功能一般非常弱(誰讓你叫他“瀏覽”器呢?“瀏覽”就是讓你用眼睛看,“打印”屬于兼職),要做到精確分頁打印,幾乎不可能,所以當前的報表工具,一般不會讓你使用瀏覽器的打印菜單來打印報表,都有自己的解決方案,這下可好,各報表工具廠商由是乎,八仙過海,各顯神通,各家都說自己的好,對于web打印了解不深的客戶,總有霧里看花的感覺。

    歸納來說,當今java報表工具采用的打印技術不外乎三類:Applet打印、導出成pdf/excel打印、控件打印。用戶選用的重點是:盡量選擇插件小的打印軟件,因為文件小意味著安裝迅速,啟動速度快。插件大小除了插件本身的大小外,還需要考慮支持軟件的大小,如有些插件很小,支持軟件卻很大。

    Applet打印

    本文開始處提及的報表工具,除finereport外都支持Applet打印。之所以多數廠商支持Applet方式打印,因為Appletjava實現,與java后臺、java報表設計器的兼容性較好,代碼容易維護,實現也方便。然而,廠商省事,用戶就得多事。Applet方式打印,用戶最多的抱怨是需要安裝jre(而當前的操作系統,一般不是默認安裝的),雖然說,多數廠商已經做到可以自動安裝jre,但對于10M(JRE1.415MJRE1.516M))的安裝,這意味著用戶需要較長時間的等待。

    另一個問題是Applet配置復雜,使用不穩定。1995年,正是因為給人們無窮的視覺和腦力震蕩的Applet ,使人們認識了java,認識了Games Gosling。所以在b/s早期,人們為了展現html的富客戶效果,Applet是唯一之選。但現如今,Applet已經是昨日黃花,早已被ajaxflex取代,是什么原因?戰略層面的東西,我也不太說得清楚,但作為程序員,經過幾番折騰后,也不會愿意再用Applet了。如經常莫名其妙地出現“小應用程序,… notinited”的錯誤,還得清理ie緩存,對于Applet打印,還需要設置jre的安全策略等等。不是靠終端用戶能完成的,這就必須額外地增加開發商的服務成本。

    Applet打印,啟動速度慢。Applet打印原理是,當你點擊打印按鈕時,瀏覽器啟動AppletApplet根據參數訪問后臺頁面信息,后臺返回頁面,Applet加載頁面后,調用jre的打印服務進行打印。這就意味著,每次打印都需要調用后臺服務程序,就必然影響打印的響應速度。

    Applet打印很安全,言下之意是ActiveX打印不安全,這是采用Applet打印的廠商津津樂道的,實際上,這是一個偽命題。AppletActiveX都是瀏覽器的插件,我們當然不希望下載插件后,該插件可以為所欲為,比如,刪除你磁盤里的文件,或啟動一個木馬,從這點來說,Applet確實比ActiveX安全,因為Applet是在一個受限的環境里運行,而ActiveX是不受限的。所以,當你訪問一個陌生的網站時,出于安全考慮,你可能會允許下載運行Applet,而阻止ActiveX。但當用戶訪問自己的網站系統,時,這種擔心就沒必要,這好比,當你與陌生人打交道時,很自然地會問自己,這人可信嘛?但如果你與家里人打交道,這個問題就不成其為問題了。

    Applet打印,除了可以設置打印機,設置紙張頁面大小等常規打印功能外,往往也集成與打印不相關的功能,比如,打印前修改(有人說,是為了做假帳方便,中國特色,國產報表工具一般都具備,jasperreport,stylereport不支持),按行分頁,自由定位,這些本來由設計器完成的功能,挪到打印功能上來,來掩蓋上面指出的Applet的種種不足。實際上,Applet功能強弱完全取決于Applet的大小,有些報表廠商甚至用Appletweb start 的方式,提供所謂的基于web的報表設計,前提是下載 40Mjar包,實際上,這種方案遠非一般意義上的純web 的報表設計,完全是混淆概念。作為用戶最希望常規的,他們熟悉的打印功能,不需要不相關的,理解困難的打印功能。

    PDF/EXCEL打印

    Pdf打印方式,就是用戶點擊打印后,瀏覽器會自動彈出adobe reader,再利用adobe的打印按鈕進行打印,由于國外adobe reader安裝非常普及,國外的java報表工具多提供這種打印方案,比如 stylereportjasperreport,國內報表工具finereport也采用這種方式(讓人不解)pdf方式打印的好處是能做到精確打印,而且報表預覽與打印一氣呵成。但不足是需要在客戶的機子里,事先安裝有adobe reader,作為程序員,一般不太會有問題,因為程序員可能經常要瀏覽一些pdf文檔,多數已經裝了adobe reader,但國內的終端用戶,大多不知pdf是何物,更談不上安裝。

    Pdf打印的另一個問題是必須彈出adobe reader,不能做到無預覽打印,這可能由于pdf缺少相應api的緣故吧。

    輕量級的ActiveX打印

    這里之所以強調“輕量級”,目的是與傳統意義上的ActiveX報表相區別。ActiveX技術可以說是報表工具家族里的沒落貴族,c/s時代,報表工具一般都被做成控件形式,水晶報表就是如此,在b/s時代,報表工具里仍然能看到ActiveX的身影,但風光大不如從前,如數巨,明宇,用友華表,inforeport。用ActiveX實現報表的不足,在網上你能輕易找到,在此不再詳述。ActiveX 報表雖深受詬責,但從打印功能來說,卻都是近乎完美,處理得卻非常好,非常穩定。

    既然,ActiveX打印是長處,能不能揚長避短地使用ActiveX技術?有人提出這樣的問題。于是,有些廠商,比如杰表,采用了瀏覽時用html,打印時用插件的方式。這種方案的需要解決的問題是,ActiveX打印控件,不能太大,否則報表工具成了ActiveX報表了。

    Applet相比,輕量級ActiveX打印具有以下優勢:

    1.       下載時間短,(大小是Applet1/250);

    2.       本地打印,打印時,不需要訪問后臺服務程序,不占用服務器資源;

    3.       啟動速度快,由于控件小,且本地打印,所以打印速度是優于以上兩中打印方案,打印速度與你點擊瀏覽器打印菜單相差無幾。

    采用輕量級的ActiveX打印的不足是,只有ie 5.5 及以上版本支持,其他版本的瀏覽器不支持。好在ie5.5瀏覽器已非常普及,在用戶那里應該不是大問題。

    杰表采用的打印方案,用一個jatoolsPrinter的控件,大小是60k,是經過數字簽名的。這個打印控件采用ie特有的打印技術(templateprinter)實現打印功能,支持打印,預覽,邊距設置,重復打印,批量打印功能。

    目前,jatoolsPrinter已經從杰表中獨立出來,任何報表工具或第三方軟件都利用該控件,實現web打印,推出至今,免費加收費用戶上萬。

    下表總結三種方式的采用者及優劣對比,對于ie5.5客戶來說,我們推薦使用ActiveX打印方案.

    報表廠商列表

    jasperreport 
     

    Stylereport 

    杰表 

    潤乾 

    快逸 

    finererport 

    posted @ 2008-08-08 15:52 report9d 閱讀(4558) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲精品私拍国产福利在线| 亚洲国产最大av| 91九色视频无限观看免费| 亚洲人成欧美中文字幕| 亚洲精品视频免费| 中文字幕免费高清视频| 国产精品亚洲专区在线播放| 久久亚洲国产伦理| 免费看AV毛片一区二区三区| 国产在线观看无码免费视频| 亚洲乱码中文字幕小综合| 亚洲日韩人妻第一页| 99无码人妻一区二区三区免费| 黄床大片30分钟免费看| 久久亚洲精品无码VA大香大香| 成人亚洲网站www在线观看| 免费无码VA一区二区三区 | 亚洲人成网男女大片在线播放| 免费一级特黄特色大片在线观看| 无码精品人妻一区二区三区免费看 | 亚洲女久久久噜噜噜熟女| 国产男女爽爽爽爽爽免费视频| 黄色免费网址大全| 亚洲伊人久久大香线焦| 久久精品亚洲男人的天堂| 国产福利在线观看免费第一福利| 美女被免费网站91色| 亚洲人成网亚洲欧洲无码| 亚洲视频在线观看免费| 亚洲午夜精品久久久久久浪潮| 手机在线看永久av片免费| 大地影院MV在线观看视频免费| 亚洲精品色播一区二区| 亚洲综合精品一二三区在线 | 久久国产精品亚洲综合| 亚洲电影日韩精品 | 亚洲熟妇无码一区二区三区| 亚洲国产精品自在线一区二区| 亚洲日韩VA无码中文字幕| 国产免费小视频在线观看| 99热在线精品免费全部my|