欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

交叉報(bào)表中自動(dòng)分組的辦法的制作方法

文檔序號(hào):6571805閱讀:544來源:國知局
專利名稱:交叉報(bào)表中自動(dòng)分組的辦法的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于流程系統(tǒng)方面的軟件技術(shù),利用關(guān)系數(shù)據(jù)庫或內(nèi)存中的數(shù)據(jù)獲得各種符合要求的報(bào)表格式文件的方法。
背景技術(shù)
報(bào)表系統(tǒng)是重要的工具。很多系統(tǒng)需要報(bào)表系統(tǒng)支持其工作。
目前市場上主流的Web報(bào)表工具,典型代表有如下四種水晶報(bào)表(Crystal Reports)、Style Report、數(shù)巨報(bào)表(Max@X Reports)、潤乾報(bào)表。
水晶報(bào)表是最早進(jìn)入中國市場的,在早期微軟的開發(fā)工具VB中集成了該產(chǎn)品,故而是目前知名度最高的報(bào)表產(chǎn)品,無論是在國際還是國內(nèi)市場,均有大量的用戶。其設(shè)計(jì)模型采用帶狀分布設(shè)計(jì)模型,通過在不同帶狀區(qū)域中放置控件的方式進(jìn)行報(bào)表繪制,具有非常好的擴(kuò)展性和適應(yīng)能力。
Style Report是最早出現(xiàn)的Java報(bào)表產(chǎn)品,可以算是Java報(bào)表的開山鼻祖,同時(shí)也是目前國際市場上知名度最高的純Java報(bào)表工具。具有出色的大并發(fā)實(shí)時(shí)性能表現(xiàn),曾經(jīng)在奧運(yùn)會(huì)期間為來自世界各地的成千上萬的訪問者提供了實(shí)時(shí)、快捷的成績發(fā)布系統(tǒng)。因其進(jìn)入中國市場較晚,在國內(nèi)用戶中名氣不大,目前主要集中在一些大型高端的報(bào)表應(yīng)用領(lǐng)域,如銀行、通訊等領(lǐng)域。其設(shè)計(jì)模型采用表格設(shè)計(jì)模型,類似Excel。
數(shù)巨報(bào)表是一款經(jīng)歷多年市場錘煉的國產(chǎn)報(bào)表產(chǎn)品,是國內(nèi)報(bào)表工具市場上主要產(chǎn)品之一。其設(shè)計(jì)端采用C++開發(fā),服務(wù)器采用Java開發(fā),同時(shí)兼顧了設(shè)計(jì)的人性化和可移植性。在其設(shè)計(jì)模型中則同時(shí)采用了帶狀分布+表格的設(shè)計(jì)模型,充分發(fā)揮了帶狀模型的擴(kuò)展性和表格模型的快速設(shè)計(jì)能力。
潤乾報(bào)表是近兩年在報(bào)表市場上突起的一匹黑馬,純Java報(bào)表(設(shè)計(jì)器和服務(wù)器均采用Java開發(fā)),采用表格設(shè)計(jì)模型。潤乾報(bào)表是國內(nèi)第一個(gè)把多數(shù)據(jù)源關(guān)聯(lián)交叉功能,提升到產(chǎn)品戰(zhàn)略高度來宣傳的產(chǎn)品,從而迅速在業(yè)界名聲鵲起。
這些報(bào)表都是專業(yè)性的產(chǎn)品,需要收費(fèi),主要是面向大眾需求,所以無法或很難根據(jù)本發(fā)明系統(tǒng)自身的特點(diǎn)進(jìn)行改進(jìn)。
IReport與JasperReportJasperreport是一個(gè)報(bào)表制作工具,用戶須按照它編寫的規(guī)則編寫一個(gè)XML,然后得到用戶所要的報(bào)表文件。Jasperreport程序庫是一個(gè)靈活,功能強(qiáng)大的報(bào)表產(chǎn)生工具,可以以PDF,HTML或XML等多種形式產(chǎn)生報(bào)表,并支持CSV,XLS,等格式報(bào)表。該引擎由java編寫,支持多種形式應(yīng)用程序產(chǎn)生動(dòng)態(tài)報(bào)表。打印的報(bào)表文檔,Jasperreport是按照一個(gè)預(yù)定義的xml文檔來組織報(bào)表的數(shù)據(jù),這些數(shù)據(jù)來源多樣,包括關(guān)系數(shù)據(jù)庫、java容器對(duì)象,用戶通過簡單的接口來實(shí)現(xiàn)數(shù)據(jù)源與報(bào)表引擎的使用。
本申請(qǐng)人的無線網(wǎng)管的TOPTEA自1.0以來,一直沒有實(shí)現(xiàn)自己的報(bào)表系統(tǒng),所有的報(bào)表都是根據(jù)需要由開發(fā)人員單獨(dú)寫一個(gè),對(duì)那些不懂或不是很懂技術(shù)的客戶來說,添加一個(gè)報(bào)表是件非常困難的事情。為了減少開發(fā)人員編寫報(bào)表的工作量,同時(shí)滿足客戶日新月異的需求變化,在2.0以后本發(fā)明決定自己開發(fā)出一套適合本發(fā)明產(chǎn)品的報(bào)表系統(tǒng),讓它所有的元素都可達(dá)到頁面配置,同時(shí)具備刪除,修改,新增和訂閱的基本功能,這樣客戶就可以在不了解技術(shù)的情況下獨(dú)立定制出一張符合自己要求的報(bào)表。
鑒于此,本發(fā)明選擇第三方開源項(xiàng)目Jasperreport作為本發(fā)明的報(bào)表基礎(chǔ)進(jìn)行二次開發(fā),它完全用Java編寫的,并可在各種Java應(yīng)用(包括J2EE或WEB應(yīng)用)中用來產(chǎn)生動(dòng)態(tài)內(nèi)容。它的主要目的是以一種簡單而靈活的方式來幫助創(chuàng)建導(dǎo)向的頁面。它依照事先定義好的報(bào)表設(shè)計(jì),利用關(guān)系數(shù)據(jù)庫或內(nèi)存中的數(shù)據(jù),將其填充進(jìn)去,得到各種符合要求的報(bào)表格式文件?;緦?shí)現(xiàn)流程如圖1。
通過上面的介紹,應(yīng)該對(duì)交叉表有所了解,因?yàn)閳?bào)表格式文件是通過配置自動(dòng)生成的,所以每個(gè)分組的位置都是需要根據(jù)下一個(gè)分組來自動(dòng)調(diào)整,否則顯示出來的報(bào)表會(huì)雜亂無章。

發(fā)明內(nèi)容
本發(fā)明目的是提出一種交叉報(bào)表中自動(dòng)分組的辦法,解決報(bào)表系統(tǒng)開發(fā)過程中所碰到的問題,交叉報(bào)表中自動(dòng)分組的辦法,以第三方開源項(xiàng)目作為開發(fā)基礎(chǔ)的,以java語言進(jìn)行報(bào)表系統(tǒng)開發(fā),采用了由內(nèi)到外,逐次計(jì)算的方法即用一個(gè)數(shù)組列表結(jié)構(gòu),行、列的數(shù)組列表是分開的,按照行列的分組,每次都從外層到內(nèi)層將組添加進(jìn)來,重新計(jì)算各個(gè)行列的寬度、高度,并調(diào)用已有函數(shù)設(shè)置四周的邊框,這樣當(dāng)所有的行列都加進(jìn)來時(shí),分組的確定信息已經(jīng)統(tǒng)計(jì)完了,這就達(dá)到了自動(dòng)分組的目的。
因?yàn)閖asperreport要求給出每個(gè)元素打印的起始位置,以及需要打印的寬度和高度,例如,如果報(bào)表行維為2,即行上有2個(gè)分組,如上面所示,第一個(gè)分組為產(chǎn)品種類,第二個(gè)分組為產(chǎn)品名稱,列維為1,即只有一個(gè)分組,就是地域,一個(gè)交叉報(bào)表把行維和列維分清楚了,基本一張報(bào)表的雛形就已經(jīng)確定了。假設(shè)每個(gè)單元格都是寬80,高20,那個(gè)上面的那個(gè)報(bào)表,第一個(gè)行組分為2個(gè),一個(gè)是數(shù)據(jù)的寬度和高度,一個(gè)是統(tǒng)計(jì)的寬度和高度,數(shù)據(jù)的寬度是80,高度是40,統(tǒng)計(jì)的寬度是160,高度是20,第二個(gè)行組也分為2個(gè),其中數(shù)據(jù)和統(tǒng)計(jì)的寬度都是80,高度都是20。那個(gè)列組的寬度是240,高度是20。
這些數(shù)字的計(jì)算方法如下列組比較好解釋,寬度是3個(gè)地域的和,就是80*3,高度就是20,至于行,計(jì)算是從里到外的,如產(chǎn)品名稱,雖說有各種車,但是不管多少都算一個(gè),因?yàn)槟莻€(gè)數(shù)據(jù)有多少之前是不知道的,所以數(shù)據(jù)的寬度是80,高度是20,統(tǒng)計(jì)也是一樣,但是到了產(chǎn)品種類,計(jì)算有點(diǎn)變化了,數(shù)據(jù)的寬度是80,高度確是20*2,是由下一個(gè)分組的數(shù)據(jù)高度+統(tǒng)計(jì)高度,所以是40,統(tǒng)計(jì)的寬度是80*2,是由下一個(gè)分組的數(shù)據(jù)寬度+本次分組的數(shù)據(jù)寬度,高度是20,這么算是比較簡單的情況,有的時(shí)候分組很多,或是不是每個(gè)分組都一定有統(tǒng)計(jì),所以在自動(dòng)分組的時(shí)候自動(dòng)計(jì)算寬度高度是一個(gè)很復(fù)雜的事情。同時(shí),因?yàn)槊總€(gè)單元格都有自己的左右上下邊框,所以如果相鄰的2個(gè)單元格如果一個(gè)有右邊框,一個(gè)有左邊框,或是一個(gè)有下邊框,一個(gè)有上邊框,就可能導(dǎo)致頁面邊框線變粗,顯的很難看。
本發(fā)明是基于交叉表來開發(fā)的。交叉表數(shù)據(jù)在縱、橫兩個(gè)方向進(jìn)行展開(擴(kuò)展),行和列都不是固定的。下面作了一個(gè)簡單的表格說明原始數(shù)據(jù)如圖2交叉后的數(shù)據(jù)如圖3交叉表的特點(diǎn)歸納如下數(shù)據(jù)在橫、縱兩個(gè)方向擴(kuò)展,即行、列均不固定。
左邊、上邊都有一個(gè)表頭,而中間是明細(xì)區(qū)。后面往往還有合計(jì)之類。
數(shù)據(jù)明細(xì)區(qū)中的每一格數(shù)據(jù)都是由行維和列維來唯一確定(故每一格數(shù)據(jù)概念相同,如圖二,都是產(chǎn)品名稱和產(chǎn)地的交叉,有的僅僅是值的不同),并在交叉表中會(huì)且只會(huì)出現(xiàn)一次。
項(xiàng)項(xiàng)就是原始數(shù)據(jù)表格中的列。如圖一所示,產(chǎn)品種類是項(xiàng),產(chǎn)品名稱也是項(xiàng)。
維來自于原始數(shù)據(jù)中的項(xiàng)??梢詫?duì)交叉表中數(shù)據(jù)進(jìn)行多重篩選分組并進(jìn)行統(tǒng)計(jì),分為行維和列維。如圖二交叉表中,數(shù)據(jù)在橫向進(jìn)行了兩次分組(列維為2),先是對(duì)產(chǎn)品種類進(jìn)行分組(產(chǎn)品種類就是交叉數(shù)據(jù)的一個(gè)維,是來自原始數(shù)據(jù)中的產(chǎn)品種類這一項(xiàng)),在值相同的情況下第二次即對(duì)產(chǎn)品名稱進(jìn)行分組;橫向只對(duì)產(chǎn)地進(jìn)行分組(行維為1)。
本發(fā)明針對(duì)這個(gè)問題,采用了由內(nèi)到外,逐次計(jì)算的方法即用一個(gè)數(shù)組列表結(jié)構(gòu)(行、列的數(shù)組列表是分開的),按照行列的分組,從外層到內(nèi)層將分組按順序添加進(jìn)來,每成功的添加一個(gè)進(jìn)來,就按照從內(nèi)層到外層的順序重新計(jì)算各個(gè)分組的寬度、高度,并通過jasperreport提供的函數(shù)對(duì)四周的邊框進(jìn)行設(shè)置,這樣當(dāng)所有的行列都加進(jìn)來時(shí),分組的確定信息已經(jīng)統(tǒng)計(jì)完了,這就達(dá)到了自動(dòng)分組的目的了,本發(fā)明所謂的自動(dòng)分組,就是在報(bào)表定制的時(shí)候不考慮它每個(gè)分組實(shí)際需要的寬度和高度,只給它需要顯示出來,然后通過算法,自動(dòng)算出報(bào)表實(shí)際需要的寬度和高度值。


圖1報(bào)表格式文件的基本實(shí)現(xiàn)流程圖2原始數(shù)據(jù)圖3交叉后的數(shù)據(jù)圖4-6是本發(fā)明操作界面的配置7是本發(fā)明的流程8是本發(fā)明實(shí)際報(bào)表的效果圖具體實(shí)施方式
交叉報(bào)表的自動(dòng)分組,是用來專門解決報(bào)表系統(tǒng)開發(fā)過程中所碰到的問題,用第三方開源項(xiàng)目作為開發(fā)基礎(chǔ)的,用java語言實(shí)現(xiàn)。具體介紹如下1.準(zhǔn)備好即將加入到數(shù)組列表中的分組R。
2.如果數(shù)組列表為空,將分組R的數(shù)據(jù)高度賦給統(tǒng)計(jì)高度(主要是為了美觀,保證每個(gè)單元格的高度一致)。
3.如果數(shù)組列表不為空,進(jìn)入44.對(duì)數(shù)組列表從后往前,即從最后一個(gè)分組往第一個(gè)分組反向循環(huán)。如當(dāng)前分組為C,用已有的函數(shù)設(shè)置分組C的左邊框和下邊框?qū)挾葹?,右邊框和上邊框?qū)挾葹?,即不顯示(如果顯示了的話,必然右邊框會(huì)與右邊單元格的左邊框重合,邊框會(huì)變粗)。如果C是最后一個(gè)分組,進(jìn)入5;否則,進(jìn)入6。
5.將R的總高度賦給C的數(shù)據(jù)高度,R的數(shù)據(jù)高度賦給C的統(tǒng)計(jì)高度,R的總寬度與C的數(shù)據(jù)寬度之和賦給C的統(tǒng)計(jì)寬度。
6.取出R的后一個(gè)分組N,將N的總高度賦給C的數(shù)據(jù)高度,N的數(shù)據(jù)高度賦給C的統(tǒng)計(jì)高度,N的統(tǒng)計(jì)寬度與C的數(shù)據(jù)寬度之和賦給C統(tǒng)計(jì)高度。
7.將R添加到數(shù)據(jù)列表中。
就這樣,每添加一個(gè)分組,都從內(nèi)到外層層修改寬度和高度的信息。
流程圖如圖7所示。圖8是本發(fā)明實(shí)際報(bào)表的效果圖。
權(quán)利要求
1.交叉報(bào)表中自動(dòng)分組的辦法,以第三方開源項(xiàng)目作為開發(fā)基礎(chǔ)的,以java語言進(jìn)行報(bào)表系統(tǒng)開發(fā),其特征是采用了由內(nèi)到外,逐次計(jì)算的方法即用一個(gè)數(shù)組列表結(jié)構(gòu),行、列的數(shù)組列表是分開的,按照行列的分組,每次都從外層到內(nèi)層將組添加進(jìn)來,重新計(jì)算各個(gè)行列的寬度、高度,并調(diào)用已有函數(shù)設(shè)置四周的邊框,這樣當(dāng)所有的行列都加進(jìn)來時(shí),分組的確定信息已經(jīng)統(tǒng)計(jì)完了,這就達(dá)到了自動(dòng)分組的目的。
2.根據(jù)權(quán)利要求1所述的交叉報(bào)表中自動(dòng)分組的辦法,其特征是采用了由內(nèi)到外,逐次計(jì)算的方法即用一個(gè)數(shù)組列表結(jié)構(gòu),其中行、列的數(shù)組列表是分開的,按照行列的分組,從外層到內(nèi)層將分組按順序添加進(jìn)來,每成功的添加一個(gè)進(jìn)來,就按照從內(nèi)層到外層的順序重新計(jì)算各個(gè)分組的寬度、高度,并通過jasperreport提供的函數(shù)對(duì)四周的邊框進(jìn)行設(shè)置,這樣當(dāng)所有的行列都加進(jìn)來時(shí),分組的確定信息已經(jīng)統(tǒng)計(jì)完了,達(dá)到了自動(dòng)分組的目的。
3.根據(jù)權(quán)利要求1所述的交叉報(bào)表中自動(dòng)分組的辦法,其特征是算法步驟為1)準(zhǔn)備好即將加入到數(shù)組列表中的分組R。2)如果數(shù)組列表為空,將分組R的數(shù)據(jù)高度賦給統(tǒng)計(jì)高度(主要是為了美觀,保證每個(gè)單元格的高度一致)。3)如果數(shù)組列表不為空,進(jìn)入44)對(duì)數(shù)組列表從后往前,即從最后一個(gè)分組往第一個(gè)分組反向循環(huán)。如當(dāng)前分組為C,用已有的函數(shù)設(shè)置分組C的左邊框和下邊框?qū)挾葹?,右邊框和上邊框?qū)挾葹?,即不顯示。如果C是最后一個(gè)分組,進(jìn)入5;否則,進(jìn)入6。5)將R的總高度賦給C的數(shù)據(jù)高度,R的數(shù)據(jù)高度賦給C的統(tǒng)計(jì)高度,R的總寬度與C的數(shù)據(jù)寬度之和賦給C的統(tǒng)計(jì)寬度。6)取出R的后一個(gè)分組N,將N的總高度賦給C的數(shù)據(jù)高度,N的數(shù)據(jù)高度賦給C的統(tǒng)計(jì)高度,N的統(tǒng)計(jì)寬度與C的數(shù)據(jù)寬度之和賦給C統(tǒng)計(jì)高度。7)將R添加到數(shù)據(jù)列表中。
全文摘要
交叉報(bào)表中自動(dòng)分組的辦法,以第三方開源項(xiàng)目作為開發(fā)基礎(chǔ)的,以java語言進(jìn)行報(bào)表系統(tǒng)開發(fā),采用了由內(nèi)到外,逐次計(jì)算的方法即用一個(gè)數(shù)組列表結(jié)構(gòu),行、列的數(shù)組列表是分開的,按照行列的分組,每次都從外層到內(nèi)層將組添加進(jìn)來,重新計(jì)算各個(gè)行列的寬度、高度,并調(diào)用已有函數(shù)設(shè)置四周的邊框,這樣當(dāng)所有的行列都加進(jìn)來時(shí),分組的確定信息已經(jīng)統(tǒng)計(jì)完了,這就達(dá)到了自動(dòng)分組的目的。
文檔編號(hào)G06F17/24GK101071413SQ200710024408
公開日2007年11月14日 申請(qǐng)日期2007年6月15日 優(yōu)先權(quán)日2007年6月15日
發(fā)明者錢伊心, 張敏 申請(qǐng)人:南京聯(lián)創(chuàng)科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
商丘市| 铜陵市| 耒阳市| 安多县| 临潭县| 阿瓦提县| 敦化市| 芒康县| 筠连县| 天祝| 武冈市| 宜兴市| 文化| 昌宁县| 泊头市| 福建省| 永宁县| 兴安盟| 汪清县| 泗洪县| 常德市| 临湘市| 华安县| 资溪县| 定远县| 射阳县| 盐城市| 外汇| 嘉祥县| 秦皇岛市| 陵水| 湄潭县| 永顺县| 英超| 扶沟县| 永平县| 正宁县| 忻城县| 桂东县| 故城县| 万源市|