您的位置:首頁 > 軟件教程 > 教程 > 報(bào)表模板中的主從關(guān)系

報(bào)表模板中的主從關(guān)系

來源:好特整理 | 時(shí)間:2024-04-09 09:32:08 | 閱讀:146 |  標(biāo)簽: 系 不用   | 分享到:

系列文章: 《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(一) 《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(二) 概要 在上一篇文章《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(二)中,小編介紹了模板語言中的的一些基本概念和用法,今天小編將繼續(xù)為大家介紹如何不同字段間的父子關(guān)系,是如何在模板語言中

系列文章:

《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(一)

《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(二)

概要

在上一篇文章《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(二)中,小編介紹了模板語言中的的一些基本概念和用法,今天小編將繼續(xù)為大家介紹如何不同字段間的父子關(guān)系,是如何在模板語言中定義的。

首先重新回顧一下,上一次使用到的數(shù)據(jù)表。如下所示:

報(bào)表模板中的主從關(guān)系

可以看到,在數(shù)據(jù)表中,銷售公司和員工兩列數(shù)據(jù)擁有一個(gè)所屬關(guān)系。

因此在某些情況下,我們可以將員工按照所屬的公司關(guān)系進(jìn)行分類,如下圖所示:

報(bào)表模板中的主從關(guān)系

這樣就實(shí)現(xiàn)了一個(gè)基于數(shù)據(jù)間的主從關(guān)系的顯示布局。

數(shù)據(jù)中的主從關(guān)系

在數(shù)據(jù)表中,剛提到了銷售公司與員工有一個(gè)所屬關(guān)系的存在,即數(shù)據(jù)本身存在邏輯關(guān)系。員工列的數(shù)據(jù)隸屬于某一個(gè)銷售公司。

同時(shí),商品和商品類型,也有一個(gè)邏輯關(guān)系,商品隸屬于某一種商品類型。通常這種所屬或隸屬的關(guān)系,會(huì)被稱為主從關(guān)系,或者父子關(guān)系。

為了方便理解,這里舉一個(gè)例子,讓您更好的理解這種包含,或者主從的關(guān)系。其本身更像是一種樹形結(jié)構(gòu),也有另一種說法,來稱呼這種關(guān)系,叫做“一對多”,1:N 的關(guān)系。

以國家為例,一個(gè)國家,有多個(gè)省,每個(gè)省有多個(gè)市,每個(gè)市又有多個(gè)區(qū),每個(gè)區(qū)又有多個(gè)街道。顯示出來就是:

國家 -> 省 -> 市 -> 區(qū)

這樣一來,國家和省,一對多,省對市,一對多。對于 1:N 的關(guān)系,通常我們會(huì)將【1】這一方稱之為父或者主,將【N】一方稱之為子或者從。

至此,我們已經(jīng)了解到概要中提到的數(shù)據(jù)表,其中有兩個(gè)主從關(guān)系,即 公司:員工,類型:商品。

報(bào)表模板中的主從關(guān)系

介紹完數(shù)據(jù)中的主從關(guān)系之后,我們現(xiàn)在再看下面這個(gè)報(bào)表的圖片,我們可以看到 A 列綁定的是 “公司” 字段, C 列綁定的是 “員工” 字段。同時(shí),A 列會(huì)將相同的數(shù)據(jù)合并成為一個(gè)單元格。

報(bào)表模板中的主從關(guān)系

基于上一篇文章《還在擔(dān)心報(bào)表不好做?不用怕,試試這個(gè)方法》(二)講到的數(shù)據(jù)綁定,我們做一個(gè)如下的模板。

報(bào)表模板中的主從關(guān)系

生成的結(jié)果為:

報(bào)表模板中的主從關(guān)系

但是會(huì)發(fā)現(xiàn)這與期望的結(jié)果不同,A 列的數(shù)據(jù)雖然僅出現(xiàn)了一次,但是 A 列與 C 列數(shù)據(jù)間的關(guān)系丟失了,從行的角度看,數(shù)據(jù)是錯(cuò)誤的。

因此為了適應(yīng)數(shù)據(jù)內(nèi)部的主從關(guān)系,我們可以使用 Context 屬性 來實(shí)現(xiàn),下面來介紹一下:

Context 屬性

Context的概念是可以為一個(gè)單元格指定一個(gè)主單元格。Context 的簡寫是【C】,將模板改寫如下圖所示:

報(bào)表模板中的主從關(guān)系

這樣生成的結(jié)果如下所示:

報(bào)表模板中的主從關(guān)系

可以看到,Context 屬性為 A 列和 C 列構(gòu)建了一種主從關(guān)系。在生成報(bào)表時(shí),其遵循如下原則:

  1. 先擴(kuò)展主單元格,后擴(kuò)展從單元格。
  2. 主單元格擴(kuò)展的時(shí)候,需要復(fù)制從單元格,并調(diào)整主從關(guān)系。
  3. 從單元格獲取數(shù)據(jù)的時(shí)候要受主單元格的約束,擴(kuò)展的時(shí)候要考慮調(diào)整主單元格的位置和大小。

隱式主從關(guān)系

在報(bào)表中,數(shù)據(jù)的主從關(guān)系非常普遍。因此,在數(shù)據(jù)綁定后,需要為單元格指定主從關(guān)系的情況會(huì)很多。因此為了使得模板看起來更簡潔,易讀。我們需要實(shí)現(xiàn)隱式主從關(guān)系的設(shè)計(jì),也就是說當(dāng)兩個(gè)單元格左右相鄰時(shí),這兩個(gè)單元格會(huì)自動(dòng)產(chǎn)生主從關(guān)系,且左邊為主,右邊為從。比如我們對模板進(jìn)行如下修改時(shí):

報(bào)表模板中的主從關(guān)系

就會(huì)生成如下報(bào)表:

報(bào)表模板中的主從關(guān)系

Range 屬性

前面介紹了Context 屬性和隱式主從關(guān)系,這兩個(gè)都是在主從單元格的角度指定主單元格。但是在某些場合,還是需要我們手工設(shè)置 Context,例如:

  1. 空單元格或常量單元格,由于本身沒有數(shù)據(jù),不能擴(kuò)展,不能隱式的成為其它單元格的主單元格。
  2. 函數(shù)都是匯總函數(shù),不具有擴(kuò)展能力,也不能隱式成為其它單元格的主單元格。

這一步可以使用 Range 屬性來解決這個(gè)問題。觀察下面這個(gè)模板,除了總銷量單元格,其它單元格都得顯示設(shè)置 Context,因?yàn)樗鼈冏筮叺膯卧裼玫暮瘮?shù),不具有擴(kuò)展性,所以沒有默認(rèn)的主單元格。

報(bào)表模板中的主從關(guān)系

通過使用 Range 屬性,則僅通過一個(gè)單元格來制定主從關(guān)系,模板修改后如下:

報(bào)表模板中的主從關(guān)系

Range 屬性設(shè)置單元格時(shí)有以下規(guī)則:

  1. Range 的優(yōu)先級是最低的,當(dāng)有主從關(guān)系沖突時(shí),Context 或者隱式主從關(guān)系優(yōu)先級更高。
  2. 擴(kuò)展方向相同的 Range 屬性擴(kuò)展,可以嵌套,但不能出現(xiàn)交叉。當(dāng)出現(xiàn)多個(gè) Range 作用于同一個(gè)單元格時(shí),即嵌套的情況,單元格將受到最內(nèi)部的 Range 屬性影響。
  3. 不同擴(kuò)展方向的 Range 則允許交叉,且能解決交叉報(bào)表的問題。

這樣根據(jù)上面的規(guī)則,我們就可以使用 Range 簡化模板,如下例子:

報(bào)表模板中的主從關(guān)系

通過為 A3 和 D1 設(shè)置 Range 屬性,就可以輕松的給 B3,C3,D3,E3 指定了主單元格。

總結(jié)

本章主要對模板語言中數(shù)據(jù)和單元格之間主從關(guān)系進(jìn)行講解,本章的主要內(nèi)容如下:

  • 數(shù)據(jù)中的主從關(guān)系
  • 報(bào)表模板中的主從關(guān)系
  • Context 屬性
  • 隱式主從關(guān)系
  • Range 屬性

下一期,小編將為大家介紹數(shù)據(jù)展開等其他設(shè)置是如何在模板中使用的。

擴(kuò)展鏈接:

輕松構(gòu)建低代碼工作流程:簡化繁瑣任務(wù)的利器

數(shù)據(jù)驅(qū)動(dòng)創(chuàng)新:以Java編程方式定制數(shù)據(jù)透視表

Java批量操作Excel文件實(shí)踐

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2024 haote.com 好特網(wǎng)