潤乾報(bào)表集成到Eclipse開發(fā)環(huán)境_第1頁
潤乾報(bào)表集成到Eclipse開發(fā)環(huán)境_第2頁
潤乾報(bào)表集成到Eclipse開發(fā)環(huán)境_第3頁
潤乾報(bào)表集成到Eclipse開發(fā)環(huán)境_第4頁
潤乾報(bào)表集成到Eclipse開發(fā)環(huán)境_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、目錄1將潤乾報(bào)表整合到Eclipse Web項(xiàng)目1拷貝潤乾報(bào)表所需文件1修改配置文件3添加數(shù)據(jù)源5多數(shù)據(jù)源配置62潤乾報(bào)表模板配置6新建數(shù)據(jù)源6新建報(bào)表8給報(bào)表添加過濾條件13分組報(bào)表18多數(shù)據(jù)源報(bào)表21子報(bào)表25引用子報(bào)表內(nèi)容31設(shè)置報(bào)表樣式323在JSP中引用報(bào)表341.1 拷貝潤乾報(bào)表所需文件打開潤乾報(bào)表程序根目錄下的webappsdemoWEB-INFlib, 將目錄下的所有jar包拷貝到Web項(xiàng)目的lib目錄下:打開潤乾報(bào)表程序根目錄下的webappsdemoWEB-INF, 將以下文件拷貝到Web項(xiàng)目的WEB-INF目錄下:打開潤乾報(bào)表程序根目錄下的webappsdemo, 將以下

2、文件拷貝到Web項(xiàng)目的WebContent目錄下:在WebContent目錄下新建reportFiles目錄用來存放報(bào)表文件:將潤乾報(bào)表Designer授權(quán)文件拷貝到Web項(xiàng)目的src目錄下:1.2 修改配置文件打開Web項(xiàng)目的文件, 在web-app節(jié)點(diǎn)內(nèi)添加如下內(nèi)容:<servlet><servlet-name>SetContextServlet</servlet-name><servlet-class></servlet-class><load-on-startup>2</load-on-startup>

3、</servlet><servlet><servlet-name>reportServlet</servlet-name><servlet-class></servlet-class><init-param><param-name>configFile</param-name><param-value></param-value></init-param><load-on-startup>1</load-on-startup>&

4、lt;/servlet><servlet><servlet-name>DMServlet</servlet-name><servlet-class></servlet-class><init-param><param-name>configFile</param-name><param-value></param-value></init-param><load-on-startup>10</load-on-startup></

5、servlet><servlet-mapping><servlet-name>reportServlet</servlet-name><url-pattern>/reportServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DMServlet</servlet-name><url-pattern>/DMServlet</url-pattern></servlet-

6、mapping><servlet-mapping><servlet-name>DMServlet</servlet-name><url-pattern>/DMServletAjax</url-pattern></servlet-mapping><jsp-config><taglib><taglib-uri>/WEB-INF/runqianReport4.tld</taglib-uri><taglib-location>/WEB-INF/runqianRepo

7、rt4.tld</taglib-location></taglib></jsp-config>打開Web項(xiàng)目的文件, 將license的值修改為剛才拷貝到src目錄下的授權(quán)文件的名稱:將reportFileHome的值修改為剛才新建的用來存放報(bào)表文件的目錄的名稱:JNDIPrefix屬性表示查找數(shù)據(jù)源時(shí)的環(huán)境串前綴,在不同的WEB服務(wù)器中不同, 如Tomcat中是java:/comp/env, 而Weblogic和Websphere中均不需要, 可以不填.dataSource表示用戶在WEB應(yīng)用中要用到的數(shù)據(jù)源配置, 其格式如下:數(shù)據(jù)源的JNDI名稱,數(shù)據(jù)庫

8、類型,取數(shù)時(shí)是否需要轉(zhuǎn)換編碼,數(shù)據(jù)庫字符集編碼,顯示報(bào)表時(shí)的字符集編碼,SQL是否需要轉(zhuǎn)碼;重復(fù)數(shù)據(jù)庫類型按下表填寫:注: 上表中不存在的數(shù)據(jù)庫類型,參數(shù)值都寫為寫unknown.1.3 添加數(shù)據(jù)源以tomcat為例, 找到%TOMCAT_HOME%/confCatalinalocalhost項(xiàng)目名稱.xml文件, 沒有則新建一個(gè), 內(nèi)容為:<Context path="/ReportWeb" reloadable="true" docBase="E:WORKSPACESReportWebWebContent" ><

9、Resource name="test" auth="Container" type="javax.sql.DataSource" maxActive="20" maxIdle="1" maxWait="10000" username="drool" password="drool" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql:/127.0

10、.0.1:3306/drool?characterEncoding=utf8" /></Context>紅色標(biāo)記為需要配置的地方, 其他配置參數(shù), 按照自己項(xiàng)目的需求進(jìn)行配置.其中name的值請與中的dataSource的數(shù)據(jù)源名稱保持一致.1.4 多數(shù)據(jù)源配置如果報(bào)表中需要使用多個(gè)不同數(shù)據(jù)源, 可以參照上一步在web容器中添加一個(gè)數(shù)據(jù)源:<Resource name="mysql" auth="Container" type="javax.sql.DataSource" maxActive=&quo

11、t;20" maxIdle="1" maxWait="10000" username="drool" password="drool" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql:/127.0.0.1:3306/drool?characterEncoding=utf8" />然后在的dataSource中追加一條配置:多條數(shù)據(jù)源之間以半角分號(hào)隔開.至此Web項(xiàng)目已經(jīng)完成了與潤乾報(bào)表的整合.2

12、潤乾報(bào)表模板配置2.1 新建數(shù)據(jù)源打開潤乾報(bào)表設(shè)計(jì)器, 點(diǎn)擊菜單配置-數(shù)據(jù)源點(diǎn)擊新建關(guān)系數(shù)據(jù)庫填寫數(shù)據(jù)庫信息點(diǎn)擊連接按鈕連接數(shù)據(jù)源2.2 新建報(bào)表點(diǎn)擊菜單文件新建報(bào)表填報(bào)類型選擇普通報(bào)表, 數(shù)據(jù)源填寫上一步定義的數(shù)據(jù)源名稱, 數(shù)據(jù)集類型選擇SQL檢索:選中需要的表選中需要的列:檢索條件暫時(shí)不填, 選取排序字段可以在語法內(nèi)看到生成的語句如下點(diǎn)擊確定, 報(bào)表類型向?qū)ы撁婵梢哉{(diào)整字段顯示順序報(bào)表定義頁面可以隱藏不需要顯示的字段點(diǎn)擊生成網(wǎng)格報(bào)表后生成的報(bào)表樣式如下2.3 給報(bào)表添加過濾條件例如上例中報(bào)表需要一個(gè)過濾條件where contry like %中國%, 首先右鍵點(diǎn)擊生成的報(bào)表的第00單元格

13、, 選擇參數(shù)選項(xiàng):新增一個(gè)參數(shù)contry, 數(shù)據(jù)類型為字符串可以給定一個(gè)預(yù)設(shè)值為中國:右鍵點(diǎn)擊00格, 選擇數(shù)據(jù)集:點(diǎn)擊編輯, 可以看到之前定義的數(shù)據(jù)集選擇檢索條件, 選擇需要添加的字段, 在右邊的窗口中填寫表達(dá)式, 參數(shù)使用占位符?代替, 語法與HQL相同:選擇參數(shù), 點(diǎn)擊增加按鈕添加一個(gè)參數(shù), 雙擊參數(shù)表達(dá)式欄會(huì)彈出表達(dá)式編輯窗口數(shù)據(jù)欄會(huì)列出當(dāng)前報(bào)表已定義的參數(shù), 雙擊可添加到報(bào)表表達(dá)式欄.點(diǎn)擊瀏覽數(shù)據(jù)可預(yù)覽當(dāng)前數(shù)據(jù)集查詢結(jié)果:此處數(shù)值會(huì)自動(dòng)填寫定義參數(shù)時(shí)所填寫的預(yù)設(shè)值. 點(diǎn)擊確定預(yù)覽數(shù)據(jù):點(diǎn)擊文件預(yù)覽可預(yù)覽報(bào)表效果:2.4 分組報(bào)表例如上例中報(bào)表需要按照國家省份城市進(jìn)行分組, 首先調(diào)整

14、一下字段順序, 然后將報(bào)表數(shù)據(jù)區(qū)內(nèi)需要分組的字段改為 =數(shù)據(jù)集.group(字段) 格式:函數(shù)說明:根據(jù)分組表達(dá)式,從數(shù)據(jù)集中選出一組組集。語法: datasetName.group( <selectExp>, ,<filterExp> ) /適用于不需要排序或數(shù)據(jù)集中已排好序 datasetName.group(selectExp,descExp,filterExp,sortExp,groupSortExp,groupDescExp,rootGroupExp)參數(shù)說明: selectExp 選出的分組表達(dá)式,可以是字段列名/列號(hào),也可以是表達(dá)式。列號(hào)用#n表示,例如#

15、0代表第0列,#1代表第1列,依此類推 descExp 分組前記錄的排序順序,true為逆序,false為順序 filterExp 過濾表達(dá)式 sortExp 分組前記錄的排序依據(jù)表達(dá)式 groupSortExp 分組后對組的排序表達(dá)式,一般是匯總運(yùn)算的表達(dá)式,如組合計(jì)等 groupDescExp 組排序順序,true為逆序,false為順序 rootGroupExp 是否root數(shù)據(jù)集表達(dá)式返回值:一組數(shù)據(jù)的集合,數(shù)據(jù)類型由selectExp的運(yùn)算結(jié)果來決定示例:例1:ds1.group(class) 把數(shù)據(jù)集ds1中所有記錄按照class字段進(jìn)行分組,并返回每組的class值組成的集合例2

16、:ds1.group(class, true ) 把數(shù)據(jù)集ds1中所有記錄按照class字段降序排列,然后根據(jù)class進(jìn)行分組,并返回每組的class值組成的集合例3:ds1.group(class,false,sex='1') 從數(shù)據(jù)源ds1中選取性別為"1"的記錄,按照class字段升序排列,然后根據(jù)class進(jìn)行分組,并返回每組的class值組成的集合例4:ds1.group(class, true, sex='1', id ) 從數(shù)據(jù)源ds1中選取性別為"1"的記錄,按照id字段降序排列,然后根據(jù)class進(jìn)行分

17、組,并返回每組的class值組成的集合例5:ds1.group(省份,true,ds1.sum(工業(yè)產(chǎn)值),true) 對數(shù)據(jù)集ds1按照省份進(jìn)行分組,分組后求出每組的sum(工業(yè)產(chǎn)值),然后按照這個(gè)匯總值對組進(jìn)行逆序排列預(yù)覽數(shù)據(jù)如下會(huì)發(fā)現(xiàn)少了一條數(shù)據(jù)并且沒有正確分組. 這是由于沒有對分組字段進(jìn)行排序, 并且未分組字段只選取了符合條件的第一條數(shù)據(jù). 給每個(gè)分組字段加上排序選項(xiàng), 并為沒有進(jìn)行分組的text字段加上select函數(shù):預(yù)覽結(jié)果如下select()函數(shù)說明:從數(shù)據(jù)集的當(dāng)前行集中選取符合條件的記錄語法: datasetName.select( <select_exp>, d

18、esc_exp, filter_exp, sort_exp,rootGroupExp ) datasetName.select(<select_exp>, , <filter_exp> )/適用于不需排序或數(shù)據(jù)集中已排好序參數(shù)說明: select_exp:要選擇的字段列名/列號(hào),也可以是表達(dá)式。列號(hào)用#n表示,例如#0代表第0列,#1代表第1列,依此類推 desc_exp: 指定數(shù)據(jù)排序的順序,true表示降序排列,false表示升序排列。 filter_exp: 數(shù)據(jù)過濾表達(dá)式,如果全部選出,則此參數(shù)省略,僅用“,”占位。 sort_exp: 數(shù)據(jù)排序表達(dá)式。當(dāng)此項(xiàng)為

19、空時(shí)先檢查desc_exp是否為空,如果為空,則不排序,否則使用select_exp排序。 rootGroupExp 是否root數(shù)據(jù)集表達(dá)式返回值:一組數(shù)據(jù)的集合,數(shù)據(jù)類型由select_exp的運(yùn)算結(jié)果決定函數(shù)示例:例1:ds1.select( name ) 從數(shù)據(jù)源ds1中選取name字段列的所有值,不排序例2:ds1.select( #2, true ) 從數(shù)據(jù)源ds1中選取第二個(gè)字段列的所有值并降序排列例3:ds1.select( name,false,sex='1') 從數(shù)據(jù)源ds1中選取性別為男性('1')的name字段列的值并升序排列例4:ds1

20、.select( name, true, sex='1', id ) 從數(shù)據(jù)源ds1中選取性別為男性的name字段列的值并按id字段降序排列如果需要分組的字段不是相鄰的字段, 例如預(yù)覽結(jié)果選擇報(bào)表E2單元格, 在右邊屬性窗口將擴(kuò)展-左主格屬性設(shè)置為A2:同樣方式將B2單元格的左主格設(shè)置為E2, 預(yù)覽結(jié)果:2.5 交叉報(bào)表2.6 多數(shù)據(jù)源報(bào)表假設(shè)在另一張表report_c中保存了本例數(shù)據(jù)的備注信息, 現(xiàn)在要在本例報(bào)表的remark一列顯示出來.右鍵點(diǎn)擊報(bào)表模板的00單元格, 選擇數(shù)據(jù)集選項(xiàng):點(diǎn)擊增加按鈕, 選擇類型為復(fù)雜SQL:直接定義查詢語句:確定后選擇需要的數(shù)據(jù)源:點(diǎn)擊瀏覽數(shù)

21、據(jù),結(jié)果如下:將報(bào)表數(shù)據(jù)區(qū)D2的值改為=ds1.id:在右側(cè)屬性欄將D2的值顯示值表達(dá)式改為ds2.select(remark,pid=value()預(yù)覽數(shù)據(jù)如下:會(huì)發(fā)現(xiàn)除了應(yīng)有的兩條數(shù)據(jù)之外, 其余應(yīng)該為空的單元格也被填入了本列的ID值. 修改一下D2的值顯示值表達(dá)式, 改為nvl(ds2.select(remark,pid=value(),""), 預(yù)覽結(jié)果如下:nvl()函數(shù)說明:根據(jù)第一個(gè)表達(dá)式的值是否為空,若為空則返回指定值語法: nvl( valueExp1, valueExp2 )參數(shù)說明: valueExp1 需要計(jì)算的表達(dá)式,其結(jié)果不為空時(shí)返回其值 val

22、ueExp2 需要計(jì)算的表達(dá)式,當(dāng)valueExp1結(jié)果為空時(shí)返回此值返回值: valueExp1或valueExp2的結(jié)果值示例:例1:nvl(A1,"") 表示當(dāng)A1為空時(shí),返回空串,否則返回A1 例2:nvl(value(),0) 表示當(dāng)當(dāng)前格為空時(shí)返回0,否則返回當(dāng)前格的值2.7 子報(bào)表假設(shè)在另一張表report_sub中保存了本例數(shù)據(jù)的備注信息, 現(xiàn)在要在本例報(bào)表顯示出來.按照新建數(shù)據(jù)源的步驟新建一個(gè)子報(bào)表, SQL語句如下:報(bào)表定義如下:其中數(shù)據(jù)區(qū)B1,B2擴(kuò)展方式為橫向擴(kuò)展, 在右側(cè)屬性窗口中設(shè)置:count()函數(shù)說明:計(jì)算數(shù)據(jù)集當(dāng)前記錄行集中,滿足條件的記

23、錄數(shù)語法: datasetName.count(filterExp,rootGroupExp,nullCheckExp)參數(shù)說明: filterExp 條件表達(dá)式,如果全部選出,則不要此參數(shù), rootGroupExp 是否root數(shù)據(jù)集表達(dá)式 nullCheckExp 檢查某一條記錄是否為空的標(biāo)達(dá)式返回值:整數(shù)舉例:例1:ds1.count() 表示對ds1中當(dāng)前記錄行集中所有記錄進(jìn)行計(jì)數(shù),返回記錄數(shù)。例2:ds1.count(true) 含義同上,但是運(yùn)算速度比ds1.count()慢,因此當(dāng)記錄全部選出時(shí),建議不要true例3:ds1.count(quantity>500) 表示從

24、ds1當(dāng)前記錄行集中選出quantity>500的記錄進(jìn)行計(jì)數(shù),返回記錄數(shù)。例4:ds1.count(,ID) 表示當(dāng)前記錄行集中ID不為空的紀(jì)錄數(shù)目預(yù)覽結(jié)果如下:將子報(bào)表保存在與主報(bào)表同一目錄下.在主報(bào)表的任意一列上點(diǎn)擊右鍵, 選擇追加數(shù)據(jù)列:在數(shù)據(jù)區(qū)F2點(diǎn)擊右鍵, 選擇子報(bào)表:點(diǎn)擊定義子報(bào)表添加, 路徑選擇相對路徑, URL填寫子報(bào)表的文件名, 雙擊可瀏覽選擇:注:此處相對路徑是相對于web應(yīng)用的根路徑, 因此當(dāng)在jsp頁面引用報(bào)表時(shí), 需要填寫的是 reportFiles/report_sub.raq (reportFiles為拷貝潤乾報(bào)表所需文件中所定義的存放報(bào)表文件的文件夾名稱

25、).本例中測試所填寫的是絕對路徑.引用方式選擇嵌入式, 點(diǎn)擊增加按鈕增加一個(gè)參數(shù)pid, 對應(yīng)表達(dá)式直接填寫主D2:D2表示直接引用主報(bào)表D2數(shù)據(jù)區(qū)的值作為參數(shù), 如果需要傳入?yún)?shù), 也可以通過雙擊方式打開表達(dá)式編輯窗口:由于新追加字段左邊為排序字段, 所以將追加數(shù)據(jù)區(qū)F2的左主格設(shè)置為非排序字段的D2:預(yù)覽結(jié)果如下:2.8 引用子報(bào)表內(nèi)容例如我們想在主報(bào)表中追加一列統(tǒng)計(jì)子報(bào)表中的總條數(shù), 先在子報(bào)表追加一列:sum()函數(shù)說明:對可擴(kuò)展單元格或集合表達(dá)式進(jìn)行求和語法: sum(expression) sum(cellExp,exp)參數(shù)說明: expression 需要被求和的單元格或表達(dá)式

26、,一般為可擴(kuò)展單元格或集合表達(dá)式 cellExp 單元格或單元格集合,以cellExp里的單元格為當(dāng)前格計(jì)算表達(dá)式exp exp 表達(dá)式返回值:實(shí)數(shù)或者字符型,由被匯總的單元格數(shù)據(jù)類型決定示例:例1:sum(A1:A10) 求出單元格A1至A10的合計(jì)值,被統(tǒng)計(jì)單元格可以是數(shù)值型也可以是字符型例2:sum(arg1) 其中arg1是參數(shù)組,求出arg1中所有元素的合計(jì)值例3:sum(B1) 表示求得當(dāng)前主格擴(kuò)展區(qū)域內(nèi)所有擴(kuò)展后的B1單元格的合計(jì)值例4:sum(B10) 表示求得根坐標(biāo)下所有擴(kuò)展后的B1單元格的合計(jì)值例5:sum(A10,B1+C1) 計(jì)算分別與每個(gè)A1相對應(yīng)的B1、C1的和的合

27、計(jì)值選中B3單元格,展開右邊屬性列表中的“擴(kuò)展”,把B3的上主格設(shè)為0,這樣可以使B3單元格匯總的是B1擴(kuò)展出來的所有年份的合計(jì)。選中第四行,將第四行的可視屬性的打勾去掉,即這樣預(yù)覽時(shí)就不會(huì)顯示第三行了。將第三行設(shè)為不可見,而不是刪除,因?yàn)橹鲌?bào)表將引用B3單元格的值。在主報(bào)表中插入一列:E2單元格表達(dá)式的含義是:G2為嵌入式子報(bào)表,取得G2中的子報(bào)表中B3的值,這樣就相當(dāng)于主報(bào)表引用子報(bào)表的數(shù)據(jù)值并匯總。eval()函數(shù)說明:動(dòng)態(tài)解析并計(jì)算表達(dá)式語法: eval( StringExp ) eval( StringExp, SubRptExp ) eval( StringExp, DataSet

28、Exp )參數(shù)說明: StringExp 待計(jì)算的表達(dá)式串 SubRptExp 嵌入式子報(bào)表對象,一般是含有子報(bào)表的單元格 DataSetExp 數(shù)據(jù)集對象,一般是ds函數(shù)返回值:表達(dá)式的結(jié)果值,數(shù)據(jù)類型由表達(dá)式?jīng)Q定示例:例1:eval( "1+5" ) 返回6例2:eval("B2+10", A1) 其中A1為嵌入式子報(bào)表,表示計(jì)算A1子報(bào)表中的B2+10例3:eval("salary+100", ds("ds1") 表示計(jì)算數(shù)據(jù)集ds1中salary加100預(yù)覽效果如下:2.9 設(shè)置報(bào)表樣式報(bào)表樣式基本設(shè)置方式與excel相同, 可自行設(shè)置顯示樣式.報(bào)表標(biāo)題及報(bào)表尾設(shè)置方法如下:在報(bào)表最上方插入一行, 在右邊屬性窗口設(shè)置行類型為頭標(biāo)題:在報(bào)表最下方插入一行, 在右邊屬性窗口設(shè)置行類型為報(bào)表尾:效果如下:預(yù)覽效果:no

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論