<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報表軟件技術博客

    java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

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

    API基本知識

    小編最近項目所做的是關于一個報表軟件—FineReport報表開發的一些事,也許有人接觸過,知識相通,我今天就把我做的分享出來。
    FineReport
    設計器與服務器不可能滿足所有的需求,某些個性化需求可能無法實現。我們可以深入的開發與控制API接口。想要了解我們內核結構及api的使用,首先我們必須掌握一些基本的概念,下圖就是我們內核的最基本圖示。

    圖是網上找的,有點不清楚,大家放大看哈。

    由于每個部分各自包含了很多屬性,比如可以設置單元格的前景、背景、邊框、字體、字號等;又比如每個WorkSheet中可以添加,刪除單元格、可以設置每個sheet的頁面屬性、可以給每個sheet中添加圖表懸浮元素等;再比如可以對WorkBook進行執行獲得結果并導出成各種格式、可以進行打印、添加工具欄等等。下圖為FineReport所有開放的API,我們今后都會用到。


    簡單程序數據集

    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,22Bobby99作為程序數據集。
    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文件,如下圖:

    3.3
    使用程序數據集
    配置好程序數據源后便可以使用定義的程序數據集了,與其他類型的數據集使用方法是相同的,可以通過拖拽方法實現單元格數據列綁定。如下圖:


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




    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲伦理中文字幕| 久久aa毛片免费播放嗯啊| 在线观看亚洲天天一三视| 免费污视频在线观看| 亚洲理论在线观看| 免费黄色毛片视频| 久久久精品国产亚洲成人满18免费网站 | 亚洲人成色777777精品| 免费大片在线观看网站| 午夜视频免费在线观看| 亚洲国产欧美日韩精品一区二区三区| 亚洲第一区精品日韩在线播放| 久久99青青精品免费观看| 美国毛片亚洲社区在线观看| 亚洲一卡2卡三卡4卡有限公司| 国产精品免费小视频| 伊人久久免费视频| 免费夜色污私人影院网站电影| 亚洲国产成人久久精品app| 免费v片在线观看无遮挡| 99精品免费观看| 51午夜精品免费视频| 亚洲一区二区三区乱码在线欧洲| 国产精品亚洲片在线观看不卡| 国产禁女女网站免费看| 最近中文字幕2019高清免费| 一级一片免费视频播放| 亚洲国产精品网站在线播放| 亚洲高清不卡视频| 亚洲区小说区激情区图片区| 波多野结衣中文一区二区免费 | 最新中文字幕免费视频| 国产成人AV片无码免费| 一级a性色生活片久久无少妇一级婬片免费放 | 自怕偷自怕亚洲精品| 国产成人毛片亚洲精品| 国产真实伦在线视频免费观看| 在线观看H网址免费入口| 日本在线免费观看| 成人片黄网站色大片免费观看cn | 亚洲人成精品久久久久|