1. 概述
1.1 問題描述
介紹填報時列印或匯出複選按鈕元件時,知道修改配置項的方法只支援列印或匯出「複選按鈕」與「複選按鈕組」元件。
但是在做一些報表、合同的時候,儲存格中可能有「無線電鈕組」元件,匯出和列印時預設只顯示選中的值,其他值不顯示。那麼該如何實現列印或匯出所有的「無線電鈕組」元件呢?
1.2 解決思路
匯出和列印時,儲存格值會受到形態設定的影響,那麼可以透過設定儲存格形態資料字典的顯示值,利用搜狗輸入法的特殊符號來實現。針對每一個不同的選擇,分別設定不同的顯示值選中狀態。
注:行動端沒有列印的概念,該方案是支援 行動端匯出 的。
2. 範例
2.1 報表設計
建立資料集 ds1,透過 sql 取出5筆資料:
建立普通報表,B1 和 B2 儲存格新增「無線電鈕組元件」,表格樣式如下圖所示:
設定 B1 和 B2 儲存格的「無線電鈕組元件」資料字典為 ds1,實際值和顯示值都為產品名稱欄位,選擇「自適應」:
2.2 方法一:逐條設定形態
選中B1儲存格,選擇「儲存格屬性>形態」,設定為「資料字典>自訂」。如下圖所示:
設定實際值和顯示值如下表所示:
實際值 | 顯示值 |
---|---|
蘋果汁 | ●蘋果汁 ○牛奶 ○番茄醬 ○鹽 ○麻油 |
牛奶 | ○蘋果汁 ●牛奶 ○番茄醬 ○鹽 ○麻油 |
蕃茄醬 | ○蘋果汁 ○牛奶 ●番茄醬 ○鹽 ○麻油 |
鹽 | ○蘋果汁 ○牛奶 ○番茄醬 ●鹽 ○麻油 |
麻油 | ○蘋果汁 ○牛奶 ○番茄醬 ○鹽 ●麻油 |
上述輸入顯示值時,其中的 ● 和 ○ 是透過搜狗輸入法的特殊字元輸入字串,輸入方式如下圖所示:
2.3 方法二:統一設定形態
方法一需要逐條設定,在無線電鈕組元件的選項較多或者後續會變化的情況下不太好用,所以有另一種統一設定的辦法,需要用到公式來判斷處理。
選中 B2 儲存格,選擇「儲存格屬性>形態」,設定為「資料字典>公式形態」。如下圖所示:
設定公式為:joinarray(MAPARRAY(value("ds1", 2), if(item = $$$, "●", "○") + item), " ")
公式說明:
value("ds1", 2) :取出 ds1 資料集的第二欄「產品名稱」的所有值,回傳值組成的陣列
MAPARRAY(value("ds1", "產品名稱"), if(item = $$$, "●", "○") + item) :對陣列進行遍歷判斷,如果為當前選中的值,則在前面插入●,其餘值在前面插入○
joinarray(MAPARRAY(value("ds1", "產品名稱"), if(item = $$$, "●", "○") + item), " ") :將陣列轉為字串,分隔符為空格
2.4 效果預覽
儲存報表,點選「填報預覽」,效果如下圖所示:
點選「列印」或匯出,Excel、Word 、PDF 和圖片均可以正常匯出,效果如下圖所示:
方法一:在按鈕組元件未選擇任何值的情況下不支援匯出和列印
方法二:在按鈕組元件沒有預設值,且預覽後未編輯過的情況下不支援匯出和列印
3. 範本下載
點選下載範本:列印匯出無線電鈕組元件.cpt