1. 程式人生 > >報表開發思路之單元格!(單元格擴充套件屬性)

報表開發思路之單元格!(單元格擴充套件屬性)

單元格

一、單元格

    報表是有行列整齊的格子組成,這些格子我們統稱為單元格,通過所有的單元格就組成了報表。類似於Excel表格中的每個格子,也相當於HTML網頁中TABLE表格的TD單元格;

二、合併單元格

    多個連續的單元格通過合併操作後,顯示為一個大的格子,合併後的格子稱為合併單元格;

三、單元格屬性值和表示式

    在單元格的屬性中,基本包含單元格的顯示值、單元格的資料值、預警變色、超連結屬性(報表鑽取);在這些屬性中,大部分是可以自定義表示式的,在計算顯示報表的時候,動態執行計算相關的屬性具體值。作為表示式時是以"="字元開始的字串。

四、資料來源

   用於定義報表資料來源的一個SQL語句字串表示式;一個報表中可以定義多個數據源,資料來源自己的SQL語句表示式字串中可以使用引數(設計器中定義輸入變數引數,由WEB前臺傳入對應的引數值)來過濾SQL語句所獲取的資料;

五、引數

   獲取資料前用於過濾報表資料的變數,主要應用於資料來源SQL語句的where條件中的變數引數的替換;從而來實現資料的篩選過濾功能;

六、內嵌控制元件

   報表中需要使用到圖片、條碼(支援二維碼)、圖表(柱狀、曲線、餅狀);通過內嵌控制元件的屬性表示式來獲取相關的資料,生成對應的物件。

七、單元格屬性

       單元格自身所擁有的一些屬性;包含外觀屬性、

外觀屬性:字型樣式、邊框樣式、字型顏色、背景顏色、斜線、文字對齊方式、 單元格大小、合併行列

資料屬性:擴充套件屬性、左主格、上主格、資料值、顯示值、預警變色、超連結等

資料屬性介面如下圖所示:開發人員可以設定相關的資料屬性

 

 

擴充套件屬性

    擴充套件是單元格的一個基本屬性。擴充套件顧名思義就是由一個單元格變成多個單元格。單元格的擴充套件屬性包含三種:橫向擴充套件、縱向擴充套件、不可擴充套件(預設為不可擴充套件);當我們定義了單元格擴充套件屬性為橫向擴充套件、縱向擴充套件時,並且單元格的表示式返回多個數據值時,該單元格即可以執行橫向或者縱向複製,複製單元格的資料值依次為表示式的結果資料值,表示式返回幾個值,單元格就複製幾個,這種現象就稱為單元格擴充套件;如果是橫向複製,即為橫向擴充套件,如果是縱向複製,即稱為縱向擴充套件。

 一、橫向擴充套件

    橫向擴充套件即單元格中的資料依次從左至右的顯示,即列方向的擴充套件,由一列變成多列模式;單元格擴充套件屬性設定為橫向擴充套件,同時單元格的表示式返回多個數據值時,該單元格可以橫向進行復制,複製出的單元格資料值依次為表示式的結果資料值,表示式返回幾個值,單元格就複製幾個;此情況我們稱為單元格的橫向擴充套件。

    橫向擴充套件時,當前單元格(執行擴充套件的單元格)同一維度(當前所屬列範圍內的所有單元格)內的層次級別大於當前當前單元格層次的單元格進行復制,複製出來的新單元格的所有屬性都引用被複制單元格的屬性。小於等於當前單元格層次級別的單元格寬度進行延展而非複製,延展成複製後的所有單元格的寬度總和(即合併列數增加即ColSpan增加);

層次級別:依據擴充套件方向從根格開始計算,層次級別值越大,則此級別越小

示範例項

(1)、擴充套件前:

示範將B2單元格進行橫向擴充套件,相關引數設定如下

  B1: 背景色設定為黃色;上主格不設定(為空)

  B2: 背景色設定為紅色;設定橫向擴充套件,上主格 設為 B1;值表示式:=to(1,3)

  B3: 背景色設定為藍色;上主格 設定為B1(即B2、B3屬於同級)

  B4: 背景色設定為綠色;上主格 設定為B2

  備註:主格的概念在後續的主格屬性中有詳細介紹;橫向擴充套件時是設定上主格,縱向擴充套件時是設定左主格;

(2)、擴充套件後:

說明:當前原始B2格進行橫向擴充套件時,計算原始B2格同一維度(列範圍)內的所有單元格層次級別:

B1單元格的上主格為空,則預設為根格[^0];那麼B1的層次級別就是1;

B2單元格的上主格是B1,則B2的層次級別就是2

B3單元格的上主格是B1,則B3的層次級別就是2

B4單元格的上主格是B2,則B4的層次級別就是3

當B2進行橫向擴充套件:執行同維度的單元格的複製與延展

B2單元格自身直接進行復制

B1的層次級別小於B2的級別,則寬度延展

B3的層次級別等於B2的級別,則寬度延展

B4的層次級別大於B2的級別,則需要複製

根據橫向擴充套件的規則對不同的層次級別的單元格執行不同的擴充套件模式;

最終計算出結果後的展示效果如上圖所示範。通過例項可以看出,當主格橫向擴充套件時,跟隨一起復制擴充套件的單元格我們定義為跟隨擴充套件。

二、縱向擴充套件

    縱向擴充套件即單元格中的資料依次從上到下的顯示,即行方向的擴充套件,由一行變成多行模式;單元格擴充套件屬性設定為縱向擴充套件,同時單元格的表示式返回多個數據值時,該單元格可以縱向進行復制,複製出的單元格資料值依次為表示式的結果資料值,表示式返回幾個值,單元格就複製幾個;此情況我們稱為單元格的縱向擴充套件。

    縱向擴充套件時,當前單元格(執行擴充套件的單元格)同一維度(當前所屬行範圍內的所有單元格)內的層次級別大於當前當前單元格層次的單元格進行復制,複製出來的新單元格的所有屬性都引用被複制單元格的屬性。小於等於當前單元格層次級別的單元格高度進行延展而非複製,延展成複製後的所有單元格的高度總和(即合併行數增加即RowSpan增加);

層次級別:依據擴充套件方向從根格開始計算,層次級別值越大,則此級別越小

示範例項:

(1)、擴充套件前:

示範將B2單元格進行縱向擴充套件,相關引數設定如下

  A2: 背景色設定為黃色;左主格 不設定(為空)

  B2: 背景色設定為紅色;設定縱向擴充套件,左主格 設為 A2;值表示式:=to(1,3)

  C2: 背景色設定為藍色;左主格 設定為B2

  D2: 背景色設定為綠色;左主格 設定為A2(即B2、D2屬於同級)

  備註:主格的概念在後續的主格屬性中有詳細介紹;橫向擴充套件時是設定上主格,縱向擴充套件時是設定左主格;

(2)、擴充套件後:

 

說明:當前原始B2格進行縱向擴充套件時,計算原始B2格同一維度(行範圍)內的所有單元格層次級別:

A2單元格的左主格為空,則預設為根格[^0];那麼A2的層次級別就是1;

B2單元格的左主格是A2,則B2的層次級別就是2

C2單元格的左主格是B2,則C2的層次級別就是3

D2單元格的左主格是A2,則D2的層次級別就是2

當B2進行縱向擴充套件:執行同維度的單元格的複製與延展

B2單元格自身直接進行復制

A2的層次級別小於B2的級別,則高度延展

C2的層次級別大於B2的級別,則需要複製

D2的層次級別等於B2的級別,則高度延展

根據縱向擴充套件的規則對不同的層次級別的單元格執行不同的擴充套件模式;

最終計算出結果後的展示效果如上圖所示範。

三、不可擴充套件

    單元格的擴充套件屬性設定為不可擴充套件,不管單元格的表示式返回單個值還是多個值,單元格都不執行復制,即稱為不可擴充套件;

(1)計算前                                                        (2)計算後          

如本節圖例可見,如果B2單元格設定為不可擴充套件,及時B2的表示式的值返回的結果是多個數據,也不執行擴充套件;最終結果是組合顯示全部值;

&n