在實際應用中,組織樹報表除了使用到的比較規範的組織結構,即,除了最後一層,所有其他層的結構都是子層,還有很多組織結構並不是這麼的規範,有的層級結構下面沒有子層,有的層級結構下面則有子層,即層級結構不確定,下面就通過web表單設計器FineReport來介紹一下。
工具/原料
web表單設計器FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
方法/步驟
資料準備
新建內建資料集ds1:,如下圖:
注:內建資料集中第二層級結構中有一個結構沒有子層,其他的結構有子層。
模板製作
由於上面準備資料是不規範的組織結構,我們按照組織樹報表中的方法來實現組織樹,即不使用樹資料集,模板效果如下圖:
單元格設定如下表
在新增過濾條件時,需要去掉將父格子作為過濾條件前面的勾選,如下圖A2單元格的過濾條件:
效果檢視
此時儲存模板,可以看到如下圖效果,沒有子層的層級結構並沒有合併單元格,其子層單元格還在,但是沒有資料顯示:
合併單元格
從效果圖上可以看到沒有下層的層級結構應該合併單元格顯示,即未歸集舊資料應該合併單元格至最下層。
由於FineReport不支援自動合併單元格,只能手動合併,未歸集舊資料所在層級為第二層,第二層資料所在單元格為第二行,最後一層在第三行,所以合併A2後面的單元格至第三行,即合併B2和B3單元格,A1單元格是第一層資料,故需要將其顯示在所有資料上面,需要合併A1和B1單元格。
回到模板設計介面,按照上述描述再操作模板,拖曳id列至B2單元格中,設定擴充套件為橫向擴充套件,其父格為A2,使資料擴充套件時,每個第二層級資料後面都跟了一個合併的單元格 ,且顯示對應層級資料,並設定其形態為:實際值為ds1的name欄位,結果如下圖:
此時,點選分頁預覽,效果如下圖:
過濾條件
為剛剛合併的B2單元格新增過濾條件,B2單元格只顯示沒有子層的第二層結構資料,即只顯示A3單元格為空的資料,新增過濾條件len(A3)==0,如下圖:
此時,再次預覽模板,如下圖,有子層的層級資料後面都有一個合併的單元格,因為其對應的A3單元格不為空,故沒有資料過濾過來,顯示為空
條件屬性
上面效果圖中,沒有子層的層級資料的子層顯示為空白,有子層結構的層級資料後面的合併單元格顯示為空白,通過條件屬性,將空白列隱藏,如下圖,同時選中A2、A3和B2單元格,為其新增條件屬性:
其他設定
按照效果圖中設定單元格樣式,並將untils資料列拖曳至第4行單元格中,如下圖:
如果組織結構有4層,那麼其模板樣式如下圖:
效果檢視
儲存模板,點選分頁預覽,效果下圖。