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


單元格

一、單元格

    報表是有行列整齊的格子組成,這些格子我們統稱為單元格,通過所有的單元格就組成了報表。類似於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的表達式的值返回的結果是多個數據,也不執行擴展;最終結果是組合顯示全部值;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM