FineReport程式網路報表 – Hello,World

來源:互聯網
上載者:User

 

什麼是程式網路報表    FineReport設計器基本可以零編碼地設計出絕大多數報表,然而這種方式建立的報圾需要依賴於設計器及報表範本,在一些有特殊需求的場合并不適用,這時候就需要通過編程的方式來設計報表並在J2EE伺服器上預覽。Reportlet介面    FineReport API提供了豐富的介面使使用者可以靈活得設計報表,其中Reportlet介面對程式網路報表提供了支援。package com.fr.web;<br />import com.fr.report.ReportTemplate;<br />public abstract interface Reportlet {<br /> public abstract ReportTemplate createReport(<br /> ReportletRequest paramReportletRequest) throws ReportletException;<br />}     createReport()方法返回一個報表範本對象供報表伺服器渲染,實現Reportlet介面並實現此方法,即可以建立一個程式網路報表。    createReport()方法返回一個報表範本對象供報表伺服器渲染,實現Reportlet介面並實現此方法,即可以建立一個程式網路報表。Hello,World!    我們將通過編程的方法,製作一張在A1儲存格顯示紅色Hello,World!文本的報表,並在伺服器上預覽。     一、建立一個實現Reportlet介面的類。     建立一個名為HelloReport的類,使之實現Reportlet介面,並實現createReport方法。Reportlet介面中只有一個方法,該方法會返回一個ReportTemplate執行個體。 package fr.report;<br />import com.fr.report.ReportTemplate;<br />import com.fr.web.Reportlet;<br />import com.fr.web.ReportletException;<br />import com.fr.web.ReportletRequest;<br />public class HelloReportlet implements Reportlet {<br /> @Override<br /> public ReportTemplate createReport(ReportletRequest arg0)<br /> throws ReportletException {<br /> // TODO Auto-generated method stub<br /> return null;<br /> }<br />}     二、為createReport方法建立ReportTemplate執行個體並返回。    1. 建立WorkSheet並返回。    com.fr.report.ReportTemplate是一個介面,它定義了報表範本的通用行為,本例中我們使用它的實作類別com.fr.report.WorkSheet。WorkSheet即工作表,用於對報表進行布局和美化,由具有不同功能的儲存格組成。@Override<br />public ReportTemplate createReport(ReportletRequest arg0)<br /> throws ReportletException {<br /> WorkSheet worksheet = new WorkSheet();</p><p> return worksheet;<br />}     2. 在A1建立文本型儲存格並添加到報表中。    com.fr.report.CellElement規定的儲存格元素應該具有的基本行為,這裡我們使用它的實作類別com.fr.report.DefaultCellElement來建立一個文本類型的儲存格。    通過構造器DefaultCellElement(int column, int row, java.lang.Object value)可以構造一個指定座標和值的儲存格,根據參數value類型的不同來為儲存格提供不同的形態和行為,如果傳如String型參數,會構造一個文本儲存格。 CellElement cellElem = new DefaultCellElement(0, 0, "Hello, World!");<br />worksheet.addCellElement(cellElem);     還可以傳入Formula、DSColumn等類型構造公式、資料列型的儲存格。        3. 為儲存格設定樣式。        樣式的設定比較繁瑣,需要使用到com.fr.base.Style類及com.fr.base.FRFont,官方文檔中的方法是這樣的。// 建立樣式<br />Style style = Style.getInstance();<br />// 建立字型<br />FRFont frFont = FRFont.getInstance("Tahoma", Font.BOLD | Font.ITALIC, 20);<br />// 設定字型為紅色<br />frFont = frFont.applyForeground(Color.RED);<br />// 應用字型到樣式<br />style = style.deriveFRFont(frFont);<br />// 應用樣式到儲存格<br />cellElem.setStyle(style);     其中applyForground()方法和deriveFRFont()方法與一般習慣不同,它並對對象進行修改,而是返回一個應用了前景色彩(或字型)的新對象。所以需要重新給引用賦值 a = a.doXXX() 以保證更新。其實我們可以用一些便捷的方法。// 建立並應用樣式<br />Style style = Style.getInstance(FRFont.getInstance("Tahoma",<br /> Font.BOLD | Font.ITALIC, 20, Color.RED));<br />// 應用樣式到儲存格<br />cellElem.setStyle(style);     3. 設定行高和列寬。    因為行高和列寬會影響到整行或整列,所以它們是工作表的行為,而非儲存格。// 設定行高和列寬<br />worksheet.setRowHeight(0, 30);<br />worksheet.setColumnWidth(0, 200);      完整代碼: package fr.report;<br />import java.awt.Color;<br />import java.awt.Font;<br />import com.fr.base.FRFont;<br />import com.fr.base.Style;<br />import com.fr.report.CellElement;<br />import com.fr.report.DefaultCellElement;<br />import com.fr.report.ReportTemplate;<br />import com.fr.report.WorkSheet;<br />import com.fr.web.Reportlet;<br />import com.fr.web.ReportletException;<br />import com.fr.web.ReportletRequest;<br />/**<br /> * 程式網路報表 - Hello, World!<br /> * http://localhost:9527/FineReport/ReportServer?reportlet=fr.report.HelloReportlet<br /> *<br /> * @author GreatGhoul<br /> */<br />public class HelloReportlet implements Reportlet {<br /> @Override<br /> public ReportTemplate createReport(ReportletRequest arg0)<br /> throws ReportletException {<br /> // 建立報表<br /> WorkSheet worksheet = new WorkSheet();</p><p> // 在A1建立儲存格<br /> CellElement cellElem = new DefaultCellElement(0, 0, "Hello, World!");</p><p> // 建立並應用樣式<br /> Style style = Style.getInstance(FRFont.getInstance("Tahoma",<br /> Font.BOLD | Font.ITALIC, 20, Color.RED));<br /> // 應用樣式到儲存格<br /> cellElem.setStyle(style);</p><p> // 設定行高和列寬<br /> worksheet.setRowHeight(0, 30);<br /> worksheet.setColumnWidth(0, 200);</p><p> // 將儲存格加入到報表中<br /> worksheet.addCellElement(cellElem);</p><p> return worksheet;<br /> }<br />} 預覽程式網路報表    要預覽報表,只需要將編譯後的.class檔案放在報表伺服器classes檔案夾下,然後就可以通過如下形式的地址訪問報表了。    http://<報表伺服器地址>/ReportServer?reportlet=<實現了Reportlet的類的全限定名>        本例中,Reportlet的全限定名為fr.report.HelloReportlet    http://localhost:9527/FineReport/ReportServer?reportlet=fr.report.HelloReportlet     效果如:

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.