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

          jutleo
          歡迎走進有風的地方~~
          posts - 63,  comments - 279,  trackbacks - 0
          iReport畫出來的報表可以滿足我們大部分的需要,所以采用iReport 編輯jrxml文件是我們的首選啦!當然掌握jrxml文件的結構也是必須的。
                  采用JDBC數據源必須有數據庫支持啊!我們新建一個test表,其中有pid、name、sex、password、department、age字段,為了方便期間我們定義這些字段全部為String類型。
                  在iReport中新建一報表,報表有title、pageHeader、columnHeader、detail、columnFooter、pageFooter、lastPageFooter、summary等部分,被成為Report section

          title:顧名思義是指報表的標題哦,它會顯示在報表的最上面,如果有多頁只會出現在第一頁的最上面。pageHeader:每頁的標題,如果有多頁每頁的開始都會顯示此部分內容。
          columnHeader:顯示報表的列頭不經常使用。
          detail:這個就不用說了吧!
          有header就會出現footer啦!lastPageFooter只會出現在最后一頁。summay會出現在每一頁數據上,主要是為了展示一些統計信息,比如當前的時間,頁數信息啦!

          新建一parameter

          此參數可作為報表的標題使用,我們在程序中動態的傳遞給報表。
              document structure---》parameter里找到reportTitle參數拖至title區域,右擊編輯reportTitle域的屬性,在font選項里找到Markup設置為HTML,TextField選項里設置Text Field Expreesion為
          "<font color='blue' size='5'>"+$P{reportTitle}+"</font>"
          下來就是設置報表的Field字段了,不需要我們一個個的新建那些字段啦!
          選擇Data--->Report Query在Report Query選項里選擇Query Language為SQL,寫入SqL語句
          select * from test order by pid DESC
          這時所有的field會出現在下面(SQL是正確的)
          關閉對話框在document structure---》field中就會出現我們需要的field,之后拖到相應的位置,關于怎么美化報表這個本人也不是很懂哦!
          如果需要顯示一下當前的頁數信息也可以自己托動Variables里的PAGE_NUMBER完成頁數的顯示。完整的jrxml文件如下:
          <?xml version="1.0" encoding="UTF-8"  ?>
          <!-- Created with iReport - A designer for JasperReports -->
          <!DOCTYPE jasperReport PUBLIC "http://JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
          <jasperReport
                   
          name="Person"
                   columnCount
          ="1"
                   printOrder
          ="Vertical"
                   orientation
          ="Portrait"
                   pageWidth
          ="595"
                   pageHeight
          ="842"
                   columnWidth
          ="535"
                   columnSpacing
          ="0"
                   leftMargin
          ="30"
                   rightMargin
          ="30"
                   topMargin
          ="20"
                   bottomMargin
          ="20"
                   whenNoDataType
          ="NoPages"
                   isTitleNewPage
          ="false"
                   isSummaryNewPage
          ="false">
              
          <property name="ireport.scriptlethandling" value="0" />
              
          <property name="ireport.encoding" value="UTF-8" />
              
          <import value="java.util.*" />
              
          <import value="net.sf.jasperreports.engine.*" />
              
          <import value="net.sf.jasperreports.engine.data.*" />

              
          <parameter name="reportTitle" isForPrompting="true" class="java.lang.String"/>
              
          <queryString><![CDATA[select * from test order by pid DESC]]></queryString>

              
          <field name="pid" class="java.lang.String"/>
              
          <field name="name" class="java.lang.String"/>
              
          <field name="sex" class="java.lang.String"/>
              
          <field name="password" class="java.lang.String"/>
              
          <field name="department" class="java.lang.String"/>
              
          <field name="age" class="java.lang.String"/>

                  
          <background>
                      
          <band height="6"  isSplitAllowed="true" >
                      
          </band>
                  
          </background>
                  
          <title>
                      
          <band height="29"  isSplitAllowed="true" >
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="138"
                                  y
          ="0"
                                  width
          ="258"
                                  height
          ="29"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement textAlignment="Center" verticalAlignment="Middle" markup="html">
                                  
          <font pdfFontName="Helvetica-Bold" isBold="true"/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA["<font color='blue' size='5'>"+$P{reportTitle}+"</font>"]]></textFieldExpression>
                          
          </textField>
                      
          </band>
                  
          </title>
                  
          <pageHeader>
                      
          <band height="0"  isSplitAllowed="true" >
                      
          </band>
                  
          </pageHeader>
                  
          <columnHeader>
                      
          <band height="0"  isSplitAllowed="true" >
                      
          </band>
                  
          </columnHeader>
                  
          <detail>
                      
          <band height="22"  isSplitAllowed="true" >
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="0"
                                  y
          ="0"
                                  width
          ="100"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement verticalAlignment="Top">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA[$F{pid}]]></textFieldExpression>
                          
          </textField>
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="100"
                                  y
          ="0"
                                  width
          ="93"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement verticalAlignment="Top">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
                          
          </textField>
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="193"
                                  y
          ="0"
                                  width
          ="58"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement verticalAlignment="Top">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA[$F{sex}]]></textFieldExpression>
                          
          </textField>
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="251"
                                  y
          ="0"
                                  width
          ="100"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement verticalAlignment="Top">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA[$F{password}]]></textFieldExpression>
                          
          </textField>
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="351"
                                  y
          ="0"
                                  width
          ="100"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement verticalAlignment="Top">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA[$F{department}]]></textFieldExpression>
                          
          </textField>
                          
          <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="451"
                                  y
          ="0"
                                  width
          ="84"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement verticalAlignment="Top">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.String"><![CDATA[$F{age}]]></textFieldExpression>
                          
          </textField>
                          
          <line direction="TopDown">
                              
          <reportElement
                                  
          x="0"
                                  y
          ="17"
                                  width
          ="535"
                                  height
          ="1"
                                  key
          ="line-1"/>
                              
          <graphicElement stretchType="NoStretch"/>
                          
          </line>
                      
          </band>
                  
          </detail>
                  
          <columnFooter>
                      
          <band height="0"  isSplitAllowed="true" >
                      
          </band>
                  
          </columnFooter>
                  
          <pageFooter>
                      
          <band height="24"  isSplitAllowed="true" >
                          
          <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                              
          <reportElement
                                  
          x="387"
                                  y
          ="5"
                                  width
          ="22"
                                  height
          ="18"
                                  key
          ="textField"/>
                              
          <box></box>
                              
          <textElement textAlignment="Center" verticalAlignment="Middle">
                                  
          <font/>
                              
          </textElement>
                          
          <textFieldExpression   class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
                          
          </textField>
                          
          <staticText>
                              
          <reportElement
                                  
          x="373"
                                  y
          ="5"
                                  width
          ="14"
                                  height
          ="17"
                                  key
          ="staticText-2"/>
                              
          <box></box>
                              
          <textElement textAlignment="Center" verticalAlignment="Middle">
                                  
          <font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
                              
          </textElement>
                          
          <text><![CDATA[]]></text>
                          
          </staticText>
                          
          <staticText>
                              
          <reportElement
                                  
          x="409"
                                  y
          ="5"
                                  width
          ="14"
                                  height
          ="17"
                                  key
          ="staticText-3"/>
                              
          <box></box>
                              
          <textElement textAlignment="Center" verticalAlignment="Middle">
                                  
          <font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
                              
          </textElement>
                          
          <text><![CDATA[]]></text>
                          
          </staticText>
                      
          </band>
                  
          </pageFooter>
                  
          <summary>
                      
          <band height="0"  isSplitAllowed="true" >
                      
          </band>
                  
          </summary>
          </jasperReport>
              我們可以直接使用ireport查看預覽效果,但是大部分我們是在應用程序中使用的哦!我們看看我們怎么讓這個jrxml模板文件工作呢,   
          File file = new File("Person.jrxml");
                      InputStream in 
          = new FileInputStream(file); // 編譯報表 jasperReport =
                      jasperReport = JasperCompileManager.compileReport(in);
          編譯文件是很耗時的工作,通常這個由iReport去做我們使用jasper文件即可,
          jasperReport = (JasperReport) JRLoader
                              .loadObject(
          "D:\\workspace\\Person.jasper");
          產生了JasperReport對象下來就是要填充數據了,采用JDBC方式我們需要一個打開的connection(數據庫連接),
          還有報表需要的parameter:
          public HashMap getMap() {

                  HashMap map 
          = new HashMap();
                  map.put(
          "reportTitle""laoshulin");
                  
          return map;
              }

          jasperPrint = JasperFillManager
                              .fillReport(jasperReport, getMap, getConn());
          針對jasperPrint對象JasperReport有很多的API可以提供各種方式的預覽或是生成文件
          我只說說JasperViewer吧!其它的看看api或是google一下就知道了
          JasperViewer jasperViewer = new JasperViewer(jasperPrint);

          JasperViewer 繼承自JFrame類,
          jasperViewer.setVisible(true);

          這樣就可以預覽報表了,
          JRViewer這個類繼承Jpanel,我們可以在web中使用它,后面介紹客戶端打印時再詳細介紹。

              JDBC數據源很簡單主要是SQL的功底,但是它是最基礎的,網上一大堆這方面的介紹哦,可以參考別人的多看看哦,我寫的這些都有點語無倫次了,主要是我自己不怎么寫東西,多以代碼的形式留給自己了,現在寫出來和大家交流,當時做這個的時候找了好多的文章沒有一篇寫的深刻的,大多都是copy的。

          posted on 2008-12-11 14:45 凌晨風 閱讀(5870) 評論(3)  編輯  收藏 所屬分類: iReport + JasperReport 系列

          FeedBack:
          # re: iReport+jasperReport之JDBC數據源
          2009-04-01 23:34 | 簌簌
          HI,看了你的方法受益匪淺,小女子實屬java菜鳥一只。用了相仿的方法,卻得到這樣的報錯,不知道高人是否可以指點一下,我疏漏了什么?謝謝!


          net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : sex
          Caused by: java.lang.NoSuchMethodException: Unknown property 'sex'  回復  更多評論
            
          # re: iReport+jasperReport之JDBC數據源
          2009-04-02 09:10 | 凌晨風
          錯誤信息很明顯啊,你多查查  回復  更多評論
            
          # re: iReport+jasperReport之JDBC數據源
          2009-05-14 11:27 | ireport
          該小女子沒有“sex" property  回復  更多評論
            

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

          常用鏈接

          留言簿(11)

          我參與的團隊

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞分類

          新聞檔案

          收藏夾

          圍脖

          最新隨筆

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 凌云县| 阿尔山市| 丰台区| 隆尧县| 舞阳县| 通渭县| 甘孜县| 华蓥市| 鲁甸县| 临沭县| 涞源县| 内江市| 宁城县| 邵东县| 梁山县| 原平市| 天柱县| 亳州市| 大同县| 临沂市| 梧州市| 时尚| 昆山市| 宝兴县| 拜城县| 河间市| 平阴县| 鹿邑县| 台东市| 隆德县| 景泰县| 高平市| 晋州市| 桃园县| 巧家县| 罗源县| 长子县| 大新县| 顺昌县| 汉沽区| 荔浦县|