var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-20738293-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script')"/>

          jutleo
          歡迎走進(jìn)有風(fēng)的地方~~
          posts - 63,  comments - 279,  trackbacks - 0
          JasperReport有三個(gè)域用來(lái)存放、展示數(shù)據(jù),Parameter、Field、Variables,這次說(shuō)說(shuō)這三個(gè)吧!

          Report Parameters

          JasperReport 報(bào)表的參數(shù)是最為一個(gè)object類(lèi)型的參數(shù)傳遞的,通常我們?cè)趈rxml文件中會(huì)這樣定義
          <parameter name="ReportTitle" class="java.lang.String"/>
          顧名思義,參數(shù)是用來(lái)傳遞給報(bào)表的,通常我們會(huì)動(dòng)態(tài)的傳遞一個(gè)參數(shù)給報(bào)表作為報(bào)表的標(biāo)題,傳遞給自報(bào)表一個(gè)參數(shù)用來(lái)作為自報(bào)表查詢(xún)的條件等等。
          jasperReport內(nèi)置了幾個(gè)有用的參數(shù):REPORT_SCRIPTLET引用外部的scriptlet,REPORT_LOCALE引用國(guó)際化preperty文件使用的,REPORT_CONNECTION傳遞報(bào)表JDBC連接參數(shù)使用的等等。
          public Map getMap() {

                  Map map 
          = new HashMap();
                  map.put(
          "reportTitle""laoshulin");
                  
          return map;
              }
          程序運(yùn)行的時(shí)候就會(huì)動(dòng)態(tài)的賦值給ReportTitle這個(gè)參數(shù)
          下面這個(gè)是報(bào)表運(yùn)行時(shí)需要的connection參數(shù),是動(dòng)態(tài)傳遞給子報(bào)表的
          <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
          我們?cè)诔绦蜻\(yùn)行的時(shí)候的時(shí)候可以把一個(gè)打開(kāi)的連接傳給REPORT_CONNECTION參數(shù),
          parameters.put("REPORT_CONNECTION", getConnection());

          Report Field

          field是用來(lái)展現(xiàn)數(shù)據(jù)的域,也是最常用的一個(gè),采用JDBC時(shí)iReport可以在我們寫(xiě)入SQL時(shí)自動(dòng)檢測(cè)到所有的field,有時(shí)我們需要自己手動(dòng)建立一些field,這個(gè)字段沒(méi)有什么好說(shuō)的,我們可以在iReport設(shè)置它的各種屬性。以后碰到的時(shí)候在說(shuō)。

          Report Variables

          提起Variables不能不提expression,report expression是jasperReport一個(gè)非常實(shí)用的組件,它可以用來(lái)執(zhí)行各種計(jì)算,修飾各個(gè)字段的數(shù)據(jù)。如:
          <textFieldExpression>
              $F{FirstName} + " " + $F{LastName}
          </textFieldExpression>

          <textFieldExpression>
              "Max Order ID is : " + $P{MaxOrderID}
          </textFieldExpression>

                  報(bào)表變量是建立在表達(dá)式上的一個(gè)特殊的用來(lái)簡(jiǎn)化報(bào)表設(shè)計(jì),一個(gè)變量可以執(zhí)行內(nèi)置類(lèi)型的計(jì)算以及相應(yīng)表達(dá)式,如:總數(shù),總和、平均數(shù)、最低值、最高值、差額等等。
          <variable name="QuantitySum" 
                  class
          ="java.lang.Double" calculation="Sum">
              
          <variableExpression>$F{Quantity}</variableExpression>
          </variable>
          JasperReport內(nèi)置了一些變量   

          PAGE_NUMBER 頁(yè)數(shù)
          COLUMN_NUMBER 列數(shù)
          REPORT_COUNT 報(bào)表總數(shù)
          PAGE_COUNT  當(dāng)前頁(yè)數(shù)
          COLUMN_COUNT 列總數(shù)

          值得一提的是JasperReport還有一個(gè)比較強(qiáng)大的功能就是parameter/field/variables都支持html語(yǔ)言

          設(shè)置Markup為HTML時(shí)就可以在Text Field Expression 中寫(xiě)入html標(biāo)記了
          "<font color='blue' size='5'>"+$P{reportTitle}+"</font>"
          當(dāng)報(bào)表預(yù)覽的時(shí)候就可以直接看到html的效果了
          posted on 2008-12-11 11:47 凌晨風(fēng) 閱讀(4636) 評(píng)論(23)  編輯  收藏 所屬分類(lèi): iReport + JasperReport 系列

          FeedBack:
          # re: iReport+jasperReport概念的澄清(續(xù))
          2008-12-11 21:01 | 楊?lèi)?ài)友
          我轉(zhuǎn)載你的文章了啊,把你有關(guān)ireport+jasper的都轉(zhuǎn)了。
          再問(wèn)一下,你感覺(jué)好用不,他比起平常的打印有哪些優(yōu)勢(shì)?  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2008-12-12 08:31 | 凌晨風(fēng)
          java都提倡開(kāi)源,jasperReport個(gè)人覺(jué)得功能非常強(qiáng)大,特別是它支持scriptlet,根據(jù)API我們可以定制自己的報(bào)表,只能說(shuō)目前它是最適合的一個(gè)!  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-09 16:36 | xiefan
          請(qǐng)問(wèn)怎么能得到報(bào)表里面的參數(shù)名字跟類(lèi)型呢?我苦惱很久了,大蝦能不能幫我一下?  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-09 16:53 | 凌晨風(fēng)
          @xiefan
          哈哈 你要是繼續(xù)往下看你就會(huì)知道怎么做了  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-09 17:33 | xiefan
          大蝦能不能貼點(diǎn)代碼供小弟參考一下,謝謝啦~O(∩_∩)O哈哈~  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-09 17:54 | 凌晨風(fēng)
          @xiefan
          JRParameter jrParameters[] = jasperReport.getParameters();
          拿出所有的參數(shù),然后遍歷jrParameters數(shù)組,
          JRParameter jrParameter = jrParameters[i];
          String name = jrParameter.getName();
          取出每一個(gè)參數(shù)的名字
          getValueClassName()
          取出參數(shù)的類(lèi)型
          建議你往下看看,多看看jasperAPI
            回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-09 18:07 | xiefan
          謝謝指點(diǎn),多多向你學(xué)習(xí),day day up!  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 10:26 | xiefan
          大蝦請(qǐng)教你一下!如果創(chuàng)建一個(gè)Web工程,在一個(gè)類(lèi)里面把編譯jrxml的代碼寫(xiě)進(jìn)去,就編譯不了.jasper的文件了,是為什么呢?是路徑的原因嗎?我看網(wǎng)上的例子都是用的jsp或者servlet寫(xiě)的,能不能在Web工程里面單獨(dú)寫(xiě)一個(gè)類(lèi)來(lái)完成編譯,打印報(bào)表的這些功能呢?  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 13:16 | 凌晨風(fēng)
          @xiefan
          完全可以啊,建議使用jasper文件操作,在你的工程里編譯是很耗費(fèi)性能的  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 14:31 | xiefan
          剛開(kāi)始我是用Java工程做的,沒(méi)有問(wèn)題,沒(méi)試Web工程,現(xiàn)在我用Web再用原來(lái)的方式就不行了,老是編譯不了jasper文件,報(bào)空指針異常,大蝦給我點(diǎn)代碼參考吧,我快崩潰了,客戶(hù)明天就要項(xiàng)目了,急啊~~~~~  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 15:36 | xiefan
          請(qǐng)大蝦留個(gè)MSN或QQ吧,向你請(qǐng)教一些問(wèn)題!  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 16:37 | 凌晨風(fēng)
          空指針應(yīng)該不是報(bào)表這邊出現(xiàn)問(wèn)題吧!,你多檢查代碼吧!或者貼上來(lái)看看  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 16:41 | xiefan
          JasperCompileManager.compileReportToFile("c:\\Reports\\Sample_Report.jrxml", "Sample_Report.jasper");
          Map map = new HashMap();
          map.put("Login", "mpotvin");
          JasperFillManager.fillReportToFile("Sample_Report.jasper", map, this.getConnection());  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 17:42 | 凌晨風(fēng)
          你搞錯(cuò)了吧!fillReportToFile這種情況下第一個(gè)參數(shù)使用jasperReport對(duì)象  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 17:46 | 凌晨風(fēng)
          JasperCompileManager.compileReportToFile編譯后這個(gè)會(huì)產(chǎn)生Sample_Report.jasper文件,但是你有沒(méi)有發(fā)現(xiàn)在你的硬盤(pán)上存在jasper文件呢?不建議這樣使用!jrxml文件完全可以通過(guò)iReport編譯成jasper文件,為什么你還有使用compileReportToFile方法呢?  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-03-11 20:11 | xiefan
          這是客戶(hù)的要求啊,他只提供一個(gè).jrxml的文件,我現(xiàn)在執(zhí)行JasperCompileManager.compileReportToFile(context.getRealPath("/reports/report.jrxml"));這句的時(shí)候,就報(bào)一個(gè)java.lang.NullPointerException
          java.lang.Class.forName0(Native Method)
          java.lang.Class.forName(Unknown Source)
          net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:72)
          net.sf.jasperreports.engine.util.JRSingletonCache.createInstance(JRSingletonCache.java:88)
          net.sf.jasperreports.engine.util.JRSingletonCache.getCachedInstance(JRSingletonCache.java:78)
          net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1136)
          net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1113)
          net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:203)
          net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:168)
          net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:152)
          net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:89)
          servlets.CompileServlet.service(CompileServlet.java:43)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
          這樣的錯(cuò)誤,為什么呢?
            回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-08 15:50 | zhangb310
          偶也遇到了這種情況:
          JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromLocation(path);//這報(bào)空指針.
          高手請(qǐng)教...  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-08 20:37 | 凌晨風(fēng)
          @zhangb310
          jasperReport中請(qǐng)使用全路徑名  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-08 21:06 | sunnidy
          路徑的問(wèn)題 應(yīng)該不是jasperReport的問(wèn)題 我做DROOLS的時(shí)候也出現(xiàn)過(guò)這樣的問(wèn)題!  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-09 16:04 | zhangb310
          我搞了兩天了,還沒(méi)好...郁悶
          大蝦幫幫忙了, 這個(gè)項(xiàng)目的里jasper文件以前是別人寫(xiě)的,可以用.
          但是我寫(xiě)地就報(bào)空指針.(在ireport工具中生成報(bào)表是好的.在servlet中就報(bào)錯(cuò)了)
          JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromLocation(path);//還是這報(bào)空指針..  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-09 16:05 | zhangb310
          也不是路徑的問(wèn)題.
          我把path打印了是全路徑.
          大蝦們,救命了!!!!!!!  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-09 16:32 | zhangb310
          大蝦們,你們有msn沒(méi)?
          我加你,更方便交流.
          速度了 ....  回復(fù)  更多評(píng)論
            
          # re: iReport+jasperReport概念的澄清(續(xù))
          2009-04-09 18:55 | 凌晨風(fēng)
          @zhangb310
          laoshulin@gmail.com  回復(fù)  更多評(píng)論
            

          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(11)

          我參與的團(tuán)隊(duì)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          新聞分類(lèi)

          新聞檔案

          收藏夾

          圍脖

          最新隨筆

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宁德市| 孝感市| 峨眉山市| 富阳市| 鄂托克前旗| 武山县| 肃宁县| 东阳市| 墨竹工卡县| 阿拉善右旗| 札达县| 棋牌| 余姚市| 嫩江县| 中西区| 巴林右旗| 黎城县| 太湖县| 新宁县| 青神县| 郸城县| 丽水市| 翁牛特旗| 陇南市| 七台河市| 湾仔区| 南阳市| 昌图县| 香格里拉县| 贵阳市| 连南| 武陟县| 高雄县| 莱芜市| 水富县| 吉安县| 桃源县| 化州市| 靖远县| 万全县| 芷江|