2016年12月1日 星期四

SSRS 報表使用上下標數字

是否有比較好的方法,在 Reporting Service 報表裡面使用上標(superscripts)、下標(subscripts)數字呢?

這個看似簡單的需求,目前的 Reporting Service 報表設計工具,似乎沒有很直覺簡單的處理方式。有人會建議,那就放圖片吧,這可行,但是圖片大小可能會因為報表的放大、縮小而失真,對工程師而言,要找到解析度剛好的圖片,其實不是一件容易的事。剩下比較常見的,就是透過 Unicode 的方式,取得上標或下標的數字,來完成我們的工作。

剛好最近的需求,是同時會用到數字的上標與下標,同時看到 SQLJason 裡的一篇文章,覺得很有價值。

他提出兩種方法。

第一種:是透過 chrw( ) 函數。把作者整理出來的圖表節錄如下,我們把 Superscript 的內容放到 chrw( ) 裡,就可以得到我們想要的上標了。



在報表裡,我們只需要再文字方塊的 Expression 裡面輸入:
="2"&chrw(178)

就可以得到 2 的平方。

※補充:20170120
如果還有其他想要加入的文字,可以透過 charmap.exe 打開字元對應表,並在其中找到想要的字符,此時要注意的有兩件事,第一是最上面的「字形」,要能夠正確顯示出內容,如果字型沒正確指定,則會出現亂碼。第二,是最下面的訊息框,它會顯示目前該字符的Unicode,但我們不能直接把它放到 chrw()裡面,因為他是 16 進位,所以要把它轉換成 10 進位的數字,可以到 convert 網頁把它轉換為 10 進位後,再放到 chrw()裡。



第二種:可以透過電腦的執行命令列,輸入 charmap.exe


就可以跳出字元對應表,這時,先在字型的下拉選項中挑選 Lucida Sans Unicode,接著你就可以在下方的字元清單中找到你想要的字,包含上標、下標的數字都有。


當你找到之後,就可以按選取,把他存放到「要複製的字元」,接著繼續挑,直到您滿意為止,最後再按「複製」。接著,就到報表設計工具,找到文字輸入方塊,點兩下後,直接用 Ctrl+V 貼上,這時,還要做一個動作,就是將文字輸入方塊的屬性裡的 FontFamily,也要設成:Lucida Sans Unicode。這樣,就可以正常顯示上下標文字了。



參考文章:
01.Subscripts and Superscripts in SSRS Reports

02.SSRS Reports – Displaying Superscripts and Subscripts