報表,我們習慣于認為主要用來呈現數據匯總、排序、分組對比的效果,一般都是“橫平豎直”的效果,也就是我們常說的二維表格,最多也就是通過一些斜線、合并表示一些特殊的數據關系。事實上,報表還可以通過實行各種不規則的布局,來發揮更大的作用。
首先,我們就拿我們每個人幾乎都遇到過的大大小小的各種考試來舉例。每逢考試就一定會有考場座位分布圖,以便考生對號入座參加考試。這里看一個具體的案例,來自于某地的一次職業技能考試,總共涉及數十所所學校,數千名考生,每人參加 4 門學科,需要按照專業、場次、時間以及一定的隨機規則進行座次安排,最終輸出座位分布圖,然后打印并在各個考場張貼。要求每名考生的座位標簽如下圖所示:
整個教室的作為分布如下圖所示:
這種形式的報表就不再是簡單的“橫平豎直”了,而是我們所說的不規則布局。具體第說,這種布局有一個形象的名稱“龍形布局”,也就是每個小的局部作為標簽具有自己的布局,好像是龍的鱗片,而整體上又按照一定的寬度(這里是 2 列)進行縱向排布。
那么,有什么方法可以簡單、快捷地一下子制作出數千人的“龍形布局”座次分布圖呢?——潤乾報表就可以!
話不多說,下面我們一起看一下潤乾報表中如何輕松搞定這類不規則布局的吧!
首先,根據效果圖繪制報表樣式和框架,如下:
這里偷偷泄露一個小【技巧】,我們使用“to 函數 + 縱向擴展”控制每列放幾張桌子,就是上圖 C4 單元格的表達式。
接下來,填入考生信息,如下
其中:
A4 單元格中表達式為:=ds1.group(ZYGZMC;ZYGZMC:1),合并單元格 A4-A8, 縱向擴展,分組取出職業名稱并升序排列,后面的數據將默認以 A4 單元格為主格跟隨擴展取數。
B4 單元格中表達式為:=ds1.group(KCMC;KCMC:1),操作同上,KCMC 代表考場名稱
D5 單元格中表達式為:=valueat(ds1.select(LLKCZWH:-1,LLKCZWH<6),C4),給每個桌子貼上理論考場座位號
E4 單元格中表達式為:= “理論:”+ds1.select(LLPD,LLKCZWH==D5),ds.select 函數根據理論考場座位號(LLKCZWH)取出理論評審(LLPD)成績
F4 單元格中表達式為:=ds1.select(ZHPD:-1,LLKCZWH==D5),操作同 E4,ZHPD 代表 綜合評審成績
E5 單元格中表達式為:=”實踐:”+ds1.select(SCPD,LLKCZWH==D5),操作同 E4,SCPD 代表實踐評審成績
E6 單元格中表達式為:=”綜合評審:”+ ds1.select(ZHPD,LLKCZWH==D5),操作同 E4,ZHPD 代表綜合評審成績
E7 單元格中表達式為:=ds1.select(XM,LLKCZWH==D5),操作同 E4,XM 代表考生姓名
E8 單元格中表達式為:=ds1.select(ZKZH,LLKCZWH==D5) ,操作同 E4,ZKZH 代表考生準考證號
到這里,我們已經將左邊 1 列的 5 位同學安排妥當了,接下來的操作相對就簡單一些了,主要是把 D、E、F 列的內容復制到 H、I、J 列,然后做一些小的修改:
H5 單元格中表達式為:=valueat(ds1.select@r(LLKCZWH:1,LLKCZWH>5),C4),復制粘貼得時候別忘記修改取數的范圍奧。
I4 單元格中表達式為:= “理論:”+ds1.select@r(LLPD,LLKCZWH==H5),注意注意,這里有一丟丟變化奧, ds.select 函數使用 @r 選項是為了保證數據從根數據集中取數不受前面那列的影響奧。
J4 單元格中表達式為:=ds1.select@r(ZHPD:-1,LLKCZWH==H5)
I5 單元格中表達式為:=”實踐:”+ds1.select@r(SCPD,LLKCZWH==H5)
I6 單元格中表達式為:=”綜合評審:”+ds1.select@r(ZHPD,LLKCZWH==H5)
I7 單元格中表達式為:=ds1.select@r(XM,LLKCZWH==H5)
I8 單元格中表達式為:=ds1.select@r(ZKZH,LLKCZWH==H5)
Bingo!有木有很意外,做到這里就已經輕松搞定考場分布報表了,是不是趕腳很簡單,時間也節省了不少?多出來的時間您一定不介意(壞笑)我再多說些什么吧…..
上面我們所完成的布局屬于平面規劃的直觀展示,接下來,我們再看一種非常實用的業務場景:
以倉儲行業為例,在實現了條碼管理的倉庫,出入庫單據可以通過簡單的掃碼完成貨品的歸位或取出,這時,出入庫單據上就需要印制多個條目,每一項都會有相應的條目,如果按照常規布局的話,如下
但是這種布局有一個問題,就是很有可能會出現錯行掃描的情況!為此,潤乾報表又偷偷給關注的我們程序猿哥哥發福利了——制作打印以下這種“錯位”形式的“入場券”:
是不是已經迫不及待想要進場了解下這種條碼不規則“錯位“布局是怎么被搞定的了? 別著急,我們這就開始說道說道:
將左右錯位的 2 個條形碼看做一組,先弄出個樣子,然后填寫相應的數據表達式,如下:
其中:
A4 單元格中表達式為:
=if(ds1.count()%2==0,to(1,ds1.count()/2),to(1,ds1.count()/2+1)),根據條碼總數是奇數還是偶數,確定總共需要縱向擴展幾組。
B4 單元格中表達式為:=ds1.select(field1)(A4[-1]+A4),意從結果集 ds1.select(field1) 中根據行號取出條形碼
C4 單元格右鍵 選擇“條形碼”,內容表達式為:=B4,同時勾選“顯示文字”, 指定條形碼按照指定單元格數據呈現
B5 單元格右鍵 選擇“條形碼”,內容表達式為:=C5
C5 單元格中表達式為:=ds1.select(field1)(A4[-1]+A4+1)
然后……就沒有然后了……“噹噹噹”,是不是嚇一跳,到這里又一個看似復雜的布局“錯位條碼清單”就這么輕松搞定了,忍不住想要動手試試了,那就別猶豫了“擼起袖子,做起來吧 !!!”。
最最后,劃重點圈知識點啦,不看的話,明天用到可別怪我沒告訴您奧。
如何控制布局:
【知識點】使用 to() 函數來做一些特殊報表格式的控制,根據條件限定行列數;
如何從一個集合中取出指定的成員
【知識點】valueat() 常用于從數組或者集合表達式中取出的某一個元素;
如何排除前面列的影響直接從總結果集拿數據
【知識點】比如考場座位圖中 @r 選項的使用
小提示:
【操作技巧】制作此類報表如果不能一眼找出數據呈現的規律以及取數方式不妨拿出紙筆,在紙上寫出一部分數據,或許一下就明白了。
說到這里,關于“報表布局技巧與應用”的簡單介紹真的真的告一段落了,實現上面的效果我們僅僅是在常規展現的報表基礎上使用了 1-2 個函數(比如:to()、valueat()、if())就做出了考場座位圖、錯位條碼清單的效果,有木有感覺 So easy,幾個函數輕松搞定。從此以后,做表再也不用害怕遇到神馬倉庫貨位管理展示圖、學生宿舍的分布….. 的情況了
詳情鏈接: http://c.raqsoft.com.cn/article/1533026639184?r=gxy
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。