為了提升報表閱讀體驗,參考 Excel 2007 的視覺風格,在 Reporting Services 2005 表格中實現奇偶列背景色交替(綠色條紋效果)。
直接在每個文字方塊的 BackgroundColor 屬性設定運算式:
=IIf(RowNumber(Nothing) Mod 2 = 1, "Lavender", "White")
RowNumber(Nothing):傳回最外層資料區域的列序號(從 1 開始)Mod 2:奇數列為 1,偶數列為 0IIf:依條件回傳淡紫色或白色為了跨報表複用,可在報表屬性 → 程式碼 中定義:
Public Function AlternateRowColor(ByVal rowNum As Integer) As String
If rowNum Mod 2 = 1 Then
Return "Lavender"
Else
Return "White"
End If
End Function
運算式改為:=Code.AlternateRowColor(RowNumber(Nothing))
利用模組層級變數 bOddRow 追蹤奇偶狀態,避免重複計算 RowNumber。
Private bOddRow As Boolean
'*****************************************************************************
'-- 明細列顯示綠色條紋效果
'-- 呼叫方式:所有明細列文字方塊的 BackgroundColor 屬性
'-- 第一欄設定 Toggle=True,其餘欄位 Toggle=False
'*****************************************************************************
Function AlternateColor(ByVal OddColor As String, ByVal EvenColor As String, ByVal Toggle As Boolean) As String
If Toggle Then bOddRow = Not bOddRow
If bOddRow Then
Return OddColor
Else
Return EvenColor
End If
End Function
| 欄位位置 | BackgroundColor 運算式 |
|---|---|
| 第一欄(觸發切換) | =Code.AlternateColor("Black", "White", True) |
| 其他欄位 | =Code.AlternateColor("Black", "White", False) |
Toggle=True 觸發 bOddRow 翻轉Toggle=False 直接讀取目前 bOddRow 狀態| 維度 | 方法一 | 方法二 |
|---|---|---|
| 實作複雜度 | 低 | 中 |
| 效能(大量資料) | 每列計算 RowNumber | 單一布林切換,效能佳 |
| 跨群組適用性 | 需注意範圍 | 需重設變數 |
| 建議場景 | 簡單報表、資料量小 | 大量資料、生產環境 |