我們常常會遇到一些列數很少行數很多的報表,這種報表窄窄長長,列印在一張 a4 紙上,橫向留出大片空白;或者行數很少,列數很多的報表,列印在 a4 紙上,縱向留出大片空白·····這些情況下不但浪費張紙而且不美觀,不方便使用者查閱。
為了解決這種問題,我們提出了分欄的解決方案,把資料按照一定的規則分欄分塊的顯示在紙張上。下面我們來具體看一下潤幹報表是如何解決分欄問題的。
我們吧分欄大致分為三類:卡片分欄、行分欄、列分欄。我們按照分類看下不同類別下應該如何實現分欄效果。
1.繪製卡片報表,如下圖所示:
卡片式報表繪製時,注意主格的設定:選中 a 列設定左主格為 b2。
這樣才能保證報表資料在展現時的分塊效果。
2.設定報表分欄屬性
在報表—報表屬性—分頁配置頁面中設定分欄數,如下圖所示:
分欄數的配置規則是:紙張的寬度 / 報表的寬度。這樣能保證最大程度利用紙張且保證資料展現的效果。
至此,我們就配置完成了卡片分欄報表。在潤幹報表中,我們只需要設定下分欄數就可以實現卡片報表的分欄效果。
注意事項:分欄報表中不允許存在隱藏行;盡量避免在第二欄中涉及自動換行撐大單元格的情況。
行分欄也叫做橫向分欄,也就是把資料行按照一定的規則拆到不同的欄中。
分欄數的配置規則是:紙張的寬度 / 報表的寬度。這樣能保證最大程度利用紙張且保證資料展現的效果。
至此,我們就配置完成了卡片分欄報表。在潤幹報表中,我們只需要設定下分欄數就可以實現卡片報表的分欄效果。
注意事項:分欄報表中不允許存在隱藏行;盡量避免在第二欄中涉及自動換行撐大單元格的情況。
行分欄也叫做橫向分欄,也就是把資料行按照一定的規則拆到不同的欄中。
其中,a5 單元格表示式:=to(0,ds1.count()/3),報表要分成三欄,所以我們要算出來每一欄要對應多少行資料。
b5 單元格表示式:=valueat(ds1.select( 編號),3*a5),從資料集集合中取出對應行的記錄,按照三倍的規律取對應位置的資料返回。
依次類推,f5 單元格表示式為:=valueat(ds1.select( 編號),3*a5+1)
j5 單元格表示式為:=valueat(ds1.select( 編號),3*a5+2)
ps:valueat 函式的取值從 0 開始。
此方法有乙個缺點:當資料量比較多的時候,valueat 的取數效能會相對降低。
為了解決方案 1 在大資料量下的效能問題,我們把資料的拆分處理在資料集中完成,在潤幹報表中我們可以使用指令碼資料集來實現這一過程。
首先,在集算器設計器中進行指令碼的取數除錯,指令碼配置如下:
其中,a1:=connect(「demo」) 表示連線 demo 資料庫;
a2:=a1.query(「select 編號, 部門, 姓名 from 員工表」) 表示從 demo 資料庫中取出員工表的資料;
a3:=a2.step(3,1) 表示每三條記錄取第一條;
b3:=a2.step(3,2)|[null] 表示每三條記錄取第二條;
c3:=a2.step(3,3)|[null] 表示每三條記錄取第三條;
a4:=a3.derive(b3(#). 編號: 編號 2,b3(#). 姓名: 姓名 2,b3(#). 部門: 部門 2,c3(#). 編號: 編號 3,c3(#). 姓名: 姓名 3,c3(#). 部門: 部門 3) 表示吧三部分的資料整合到一起,組合成乙個完整的資料集返回。
最後,按照常規報表取數生成報表檔案:
這種方法的優先在於,可以更加方便的對資料進行處理,在處理過程中不依賴資料庫,而且也最大程度上減少了單元格的二次計算處理,提公升了報表的效能。
當列數比較多,需要強制折行到下一行顯示時,就是對應我們常說的列分欄需求。
實現的原理是,我們把資料按照一定的規則強制設定換行,比如上圖的需求,需要每行顯示六列資料,那麼我們只需要按照這個規則算好需要分幾行,然後吧資料填充進去就可以了,具體單元格表示式配置如下:
其中,a1:=ds1.count(),用於計算此資料集內的資料個數。
a2:=to(1, int(a1)/6+1),作為強制分行的擴充套件基礎,int(a1)/6+1 用於計算一共需要擴充套件的行數,其中」6″是每行的資料列數
b2:=(a2-1)*6,是每行的基數。
d1:=if(a1<6,to(1,a1),to(1,6)) ,控制顯示為 6 列資料, 資料夠 6 列就換行
d2:=ds1.select(name, #0==d1+b3,1) ,其中 d1+b3 分別遞增,達到與每個行號進行匹配的目的,#0 表示取對應記錄的行號。
d3:=ds1.select(price,rownum==d1+b3,1)
至此,就實現了列分欄的需求。
簡單的分欄需求,我們可以直接通過潤幹報表設定欄數實現效果。
複雜的分欄需求實現時,先明確分欄的規則,然後用報表工具內建的函式或者配置實現這個規則,最後填充資料。有潤幹報表在,你的想法我來實現。
分欄報表製作攻略
我們常常會遇到一些列數很少行數很多的報表,這種報表窄窄長長,列印在一張 a4 紙上,橫向留出大片空白 或者行數很少,列數很多的報表,列印在 a4 紙上,縱向留出大片空白 這些情況下不但浪費張紙而且不美觀,不方便使用者查閱。為了解決這種問題,我們提出了分欄的解決方案,把資料按照一定的規則分欄分塊的顯示...
經典水晶報表設計 分欄
借助 多列格式化 功能實現。1.啟用 多列格式化 功能。1 進入 節專家 對話方塊,並在 節 中選擇 詳細資料 2 在 公用 選項卡選中 多列格式化 此時會出現 布局 選項卡。2.調整布局,實現分欄效果。要想分兩欄,調整 詳細資料大小 的寬度,確保寬度的兩倍小於去除頁邊距後的頁面寬度,才能一行顯示兩...
報表製作技巧 報告式報表的製作
在銀行 財務 銷售等系統中,我們常常需要製作報告檔案來進行工作匯報,例如季度銷售報告 年度總結報告等。在沒有報表工具之前,這類報告大部分是用word做的,費時費力還不易維護,每次都獨自加班到很晚 一首涼涼送給自己 今天,我要帶一帶新的節奏,展現下神操作來製作這類報告式報表。這次我們拿銀行季度報告來進...