報表引擎API開發入門—簡單程式資料集

來源:互聯網
上載者:User

標籤:finereport   報表   引擎   api   

小編最近接的項目是有關報表開發的,很想把這部分知識分享出來。希望大家能夠支援我!不多說,馬上進入我們今天的話題。

API基本知識

小編最近項目所做的是關於一個報表軟體—FineReport報表開發的一些事,也許有人接觸過,知識相通,我今天就把我做的分享出來。
FineReport設計器與伺服器不可能滿足所有的需求,某些個人化需求可能無法實現。我們可以深入的開發與控制API介面。想要瞭解我們核心結構及api的使用,首先我們必須掌握一些基本的概念,就是我們核心的最基本圖示。
650) this.width=650;" src="http://img.blog.csdn.net/20150824142414200" alt="20150824142414200" />
圖是網上找的,有點不清楚,大家放大看哈。
650) this.width=650;" src="http://img.blog.csdn.net/20150824142422012" alt="20150824142422012" />
由於每個部分各自包含了很多屬性,比如可以設定儲存格的前景、背景、邊框、字型、字型大小等;又比如每個WorkSheet中可以添加,刪除儲存格、可以設定每個sheet的頁面屬性、可以給每個sheet中添加圖表懸浮元素等;再比如可以對WorkBook進行執行獲得結果並匯出成各種格式、可以進行列印、添加工具列等等。為FineReport所有開放的API,我們今後都會用到。

650) this.width=650;" src="http://img.blog.csdn.net/20150824142431523" alt="20150824142431523" />

簡單程式資料集

FineReport設計器本身已經提供了資料庫資料來源、文本資料來源、xml資料來源等多種資料來源方式,同時程式員還可以通過java程式自行產生資料來源,只需要實現TableData介面便可以了。

1. 問題描述

FineReport報表的資料來源可以是資料庫資料或是文本資料,並且還可以是其它任何類型的資料,因為FineReport是通過AbstractTableData抽象類別來讀取資料來源的,而上述所有的資料來源都繼承實現其抽象方法,因此只要實現了AbstractTableData抽象類別,也就可以用自訂類型的資料來源了(程式資料集),FineReport報表引擎就能夠讀取定義的資料來源作為報表資料來源使用。

2.實現原理

AbstractTableData抽象類別主要有5個方法,如下:

1.擷取AbstractTableData的總列數

publicintgetColumnCount();

2.擷取AbstractTableData中第columnIndex列的列名

public String getColumnName(int columnIndex);

3.判斷是否存在第rowIndex行,這主要是用於處理超大資料時,完全遍曆所有資料擷取總行數相當困難,用這個方法來判斷第rowIndex行是否存在,存在則可讀取

publicbooleanhasRow(int rowIndex);

4.擷取AbstractTableData的總行數

publicintgetRowCount();

5.擷取AbstractTableData中第columnIndex列,第rowIndex行的資料

public Object getValueAt(int rowIndex, int columnIndex);

在某些應用情境中,需要在程式中對資料進行處理後再作為報表的資料來源使用。

3.樣本

下面我們定義資料集為如下樣式:列為Name,Score,值分別為Alex,15;Helly,22;Bobby,99作為程式資料集。
3.1定義程式資料來源
定義一個類,繼承AbstractTableData,並實現裡面的方法,具體的代碼如下:

publicclassArrayTableDataDemoextendsAbstractTableData{    // 定義程式資料集的列名與資料儲存位置    private String[] columnNames;    private Object[][] rowData;    // 實現構建函數,在構建函數中準備資料    publicArrayTableDataDemo(){        String[] columnNames = { "Name", "Score" };        Object[][] datas = { { "Alex", new Integer(15) },                { "Helly", new Integer(22) }, { "Bobby", new Integer(99) } };        this.columnNames = columnNames;        this.rowData = datas;    }    // 實現ArrayTableData的其他四個方法,因為AbstractTableData已經實現了hasRow方法    publicintgetColumnCount(){        return columnNames.length;    }    public String getColumnName(int columnIndex){        return columnNames[columnIndex];    }    publicintgetRowCount(){        return rowData.length;    }    public Object getValueAt(int rowIndex, int columnIndex){        return rowData[rowIndex][columnIndex];    }}

將ArrayTableDataDemo.java編譯產生ArrayTableDataDemo.class類。
將產生的類檔案拷貝到報表工程/WEB-INF/classes目錄下。由於該類是在com. fr.data包中的,因此最終應該將該ArrayTableData.class放在/WEB-INF/classes/com/fr/data下面。此時該程式資料來源便定義好了。
3.2配置程式資料來源
點擊模板資料集下面的加號,選擇程式資料集,然後在彈出的程式資料集對話方塊中,選擇對應的class檔案,如:
650) this.width=650;" src="http://img.blog.csdn.net/20150824142436103" alt="20150824142436103" />
3.3使用程式資料集
配置好程式資料來源後便可以使用定義的程式資料集了,與其他類型的資料集使用方法是相同的,可以通過拖拽方法實現儲存格資料資料行繫結。如:

650) this.width=650;" src="http://img.blog.csdn.net/20150824142440922" alt="20150824142440922" />

今天就講到這啦,是不是很不好懂,小編在做著項目之前沒接觸過報表開發也是費了一番功夫。大家繼續關注哦!


報表引擎API開發入門—簡單程式資料集

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.