系列文章:
概要
在上一篇文章《還在擔心報表不好做?不用怕,試試這個方法》(三)中,小編爲大家分享了數據間的主從關係及單元格佈局。主要講解數據之間的主從關係,以及如何在單元格中表示這種關係。
在本期教程中,小編將爲大家分享如何在模板中解決各種分組與擴展的情況。
模板中的擴展
模板引擎如何擴展單元格
在上一篇文章《還在擔心報表不好做?不用怕,試試這個方法》(三)中,小編通過主從相關的屬性(Context 以及 Range)爲模板配置主從關係。以及提到了擴展相關的規則:
- 先擴展主單元格,後擴展從單元格。
- 主單元格擴展的時候,需要複製從單元格,並調整主從關係。
- 從單元格獲取數據的時候要受主單元格的約束,擴展的時候要考慮調整主單元格的位置和大小。
這次我們舉一個例子,讓大家更好地理解如何進行數據填充的,假定現有如下的模板:
第一步:先擴展 A1 單元格,模板引擎從數據源 ds 中,獲取銷售公司的數據,得到兩條數據。根據默認的擴展方向(向下),將數據跳至 A1 和 A2 中。同時,C1 的單元格因爲主從關係,而被複制,實現結果如下:
第二步:擴展單元格 C1,模板引擎從數據源中獲取銷售公司爲 【西安公司】的員工數據。得到三條數據,因此擴展C1,並填入數據。A1 也因爲是 C1 的主單元格,從而也被複制擴展。結果如下:
第三步:繼續擴展 C4 單元格。與第二步邏輯一樣,結果如下:
擴展的方向
Excel作爲結構化表格,本質是一個二維矩陣。因此擴展的方向,自然也只有水平,橫向擴展和垂直,縱向擴展。
在剛纔的例子中,A列和C列的數據擴展均是向下的。但是在有些報表中,數據是水平甚至是交叉擴展的。
因此,提供了屬性 E,可以通過設置 E = H 來指定,橫向擴展。
在大多數情況下,可以根據單元格主從關係來,選擇擴展方向:
- 當主從單元格爲左右相鄰,則向下擴展。
- 當主從單元格爲上下相鄰,則向右擴展。
但是當主從單元格不相鄰時,則可以使用 E 來指定方向。使用( E= V)向下或者向右( E= H)兩個方向進行擴展,或者 E = N,不作擴展。
例子:交叉擴展
基於之前的數據表,如果希望生成的報表如下所示,是一個交叉表。那就需要合理利用擴展屬性來解決問題。
爲了能夠生成如上的報表結果,模板應該如下設計:
在B2中,我們通過橫向擴展商品類型,爲系統增加了更多的選擇。而A2則根據默認設置,實現了縱向擴展的功能。同時,在B2格子中,小編進行了顯示指定,根據A2和B1的數據進行自動擴展。通過靈活的報表生成功能,小編能夠獲得之前期望的結果,提供更美觀、直觀的數據展示。
模板中的分組
在上述例子中,細心的讀者可能已經注意到在數據源中,【銷售公司】數據與【員工】數據相關聯。然而,在導出後,公司名稱卻被自動分組去重。這正是模板填充時的一項智能功能,它能夠自動爲數據進行分組,從而提供更清晰、簡潔的數據展示效果。這個特性使得數據處理更加美觀和易於理解。
在模板屬性中,可以通過分組屬性 Group來處理各種分組的需求,Group 有四種屬性值:
- G=Normal: 對於列中的相應記錄,不重複分組依據字段的值;而是每個數據組打印一次。
- G=Merge (默認值): 行爲與常規參數相同,不同之處在於它會合並每個組集的按字段分組的單元格。
- G=Repeat: 對相應的記錄重複分組依據字段的值。
- G=List: 字段值針對相應的記錄獨立列出。
不同的屬性應用在模板上會有如下效果:
Normal
模板修改如下:
生成的報表如下:
Normal 情況下,A1單元格會擴展,但是數據僅出現一次。
Merge (默認情況)
模板如下:
生成的報表如下:
Merge 即默認情況,A1單元格會擴展,數據僅出現一次,但會合並單元格。
Repeat
模板如下:
生成的報表如下:
Repeat情況下,A1單元格會擴展,且數據會被重複填充。
List
模板如下:
生成的報表如下:
在List情況下,A1單元格會自動擴展,並且數據會被重複填充。然而,這種情況下並沒有進行分組,數據庫中的數據被完整地列出。我們可以將List理解爲不進行數據分組的方式,而其他三種情況則代表了經過分組後的不同展示方式。這種設計使得數據處理更加優雅和清晰。
總結
本章主要對模板語言中的擴展和分組進行講解,擴展和分組是模板填充中重要且基礎的概念。
本文所提到的所有內容均來自葡萄城公司的服務端表格控件產品GcExcel。如果您想了解更多信息,可以參考這篇產品文檔及Demo 網站。下一期,小編將爲大家介紹數據展開等其他設置是如何在模板中使用的。下一期,小編將繼續爲大家講解模板填充中的其他屬性及設置。
擴展鏈接: