系列文章:
《還在擔心報表不好做?不用怕,試試這個方法》(一)
《還在擔心報表不好做?不用怕,試試這個方法》(二)
《還在擔心報表不好做?不用怕,試試這個方法》(三)
概要
在上一篇文章《還在擔心報表不好做?不用怕,試試這個方法》(三)中,小編為大家分享了資料間的主從關係及單元格佈局。主要講解資料之間的主從關係,以及如何在單元格中表示這種關係。
在本期教程中,小編將為大家分享如何在模板中解決各種分組與擴充套件的情況。
模板中的擴充套件
模板引擎如何擴充套件單元格
在上一篇文章《還在擔心報表不好做?不用怕,試試這個方法》(三)中,小編透過主從相關的屬性(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,不作擴充套件。
例子:交叉擴充套件
基於之前的資料表,如果希望生成的報表如下所示,是一個交叉表。那就需要合理利用擴充套件屬性來解決問題。
為了能夠生成如上的報表結果,模板應該如下設計:
ng)
在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 網站。下一期,小編將為大家介紹資料展開等其他設定是如何在模板中使用的。下一期,小編將繼續為大家講解模板填充中的其他屬性及設定。
擴充套件連結:
輕鬆構建低程式碼工作流程:簡化繁瑣任務的利器
資料驅動創新:以Java程式設計方式定製資料透視表
Java批次操作Excel檔案實踐